2017-11-17 13 views
0

Git에서 충돌이 해결 된 직후 정규 커밋을해야하는 이유는 무엇입니까?Git에서 충돌이 해결 된 직후 정규 커밋을해야하는 이유는 무엇입니까?

충돌이 해결 된 후 다른 파일을 수정하면 함께 커밋 할 수 있습니까?

차이점은 무엇입니까?

+1

당신이 묻고있는 것이 100 % 명확하지 않습니다. Git에게 당신이 충돌을 해결하는 것을 끝내라는 명령이 왜 당신이 정상적인 단일 부모 커밋을하는 데 사용하는 것과 동일한'git commit '이 아니라'git resolved'와 같은 다른 이름을 가지지 않는지 묻고 있습니까? –

답변

3

"차이"는 없습니다. 병합은 하나 또는 그 이상의 충돌로 끝나는 경우

는 가능한 한 많은 병합 한 후 이러한 충돌에 대해 알리는 정지.

그런 다음 충돌을 해결하면 최종 병합 커밋을 커밋하는 것이 좋습니다.

이유는 병합 충돌 해결 단계가 다른 git 명령, 외부 충돌 해결 도구를 호출하여 수동으로 수행하고 파일을 수동으로 또는 시각적으로 검사하는 등의 작업을 수동으로 수행하기 때문입니다. 대화 형 프로세스가 아니기 때문에 정상적으로 커밋되기 전에 충돌을 해결할 때까지 기다리십시오. 그것은 단순히 "나는 여기서 멈추고, 당신이 끝나면 저지른 다"고 말합니다. 이러한 충돌을 해결하는 이외에, 당신은 더 디스크에있는 파일을 변경하고 해당 변경 사항을 추가하고 커밋 경우

, 그냥 모든 것을 함께 커밋됩니다. 이 점에 특별한 것은 없습니다. 일반 다른이가 가지고있는 (보통)이 완전히 정규 것을 이외의 두 부모를 대신 한 모든 종과 경적으로 커밋을 제외하고 커밋 같은 병합 커밋

이다. 사실 커밋 된 모든 변경 사항을 준비한 git에서 수행 한 병합 작업에 불과하다. 올바른 변경 내용을 준비하고 두 부모와 커밋하도록 git에 명령하여 병합을 수동으로 100 % 수행 할 수있다. 이와 같이

은 더 이렇게하지 대 파일을 수정하면 차이는 병합은 무엇 자식 + 충돌 해결 대 추가 더 변화를 포함하는 것입니다.

아무것도 더 많지 않습니다. 병합의 마지막 단계 (보통 막후) 커밋이기 때문에

+0

여기에 의견을 남길 수는 있지만 댓글에 귀하의 이름을 태그하는 방법을 모르겠다. 내 질문 및 관련 답변 닫는 Deserealize 부분을 수정하는 방법을 말할 수 없습니다. –

0

당신은 커밋해야하고있을 때 충돌이 밖으로 단계 잎 이눔 아. 따라서이 상황에 맞는 새 명령이나 하위 명령을 만드는 대신 색인을 정리 한 후에 마지막 단계를 완료하도록 결정했습니다.

당신 충돌 해상도 이외의 변경 작업을 수행 할 수 있습니다. 때로는 충돌을 적절하게 해결하는 데 필요합니다. git을 사용하면 변경 사항이 충돌 해결에 정말로 필요한지 여부를 "알 수"있습니다. 은 충돌 마커 내부에 없었던 변경 사항을 감지하고 경고를 발행 할 수 있지만 일부 충돌 시나리오에서는 적법한 해결이 방지되어 경고와 관련하여 추가 작업을 할 가치가없는 것으로 보입니다. 따라서 개발자는 자신이해야 할 일을 신뢰합니다.

게다가 특별히 에게 병합을 커밋하지 말라고 말 했으므로 커밋하기 전에 병합 결과를 편집 할 수 있습니다 (충돌이 없더라도). 당신은 아마 안된다.하지만 그렇게 할 수는있다.

병합에서 실제 충돌 해결 방법이 아닌 변경을 수행하면 변경 사항이 병합 커밋에서 다소 "숨겨지기"때문에 부작용이있을 수 있으므로주의해야합니다. .

하지만 git은 강력한 도구이며 일반적으로 그 힘을 어떻게 사용하는지 알기를 기대합니다. 원하는 부모와 커밋 할 내용을 커밋 할 수있는 능력은 그 힘의 일부입니다.