2013-06-18 1 views
0

2 개의 분기와이 분기에서 변경된 파일이 있습니다 (특정 시점 이후에 분리 된 기록 - 익명의 개발자를 비난합시다 git의 오용).Git은 생각했던대로 파일을 수정하지만, 그것이 잘못되었다고 생각합니다.

내가 가진 문제는이 두 가지를 병합 할 때 git이 파일을 자동으로 수정한다는 것입니다.

파일을 병합 충돌로 간주하지 않습니다. (자체적으로 수정하고 유지할 수있는 부분을 선택할 수 있으므로 좋을 것입니다.)

결국 병합 할 때마다 나뭇 가지 중 하나에서 몇 가지 방법을 잃을 때처럼 자식이 하나의 버전을 선호하는 것처럼 보입니다.

이 자식 기능을 덮어 쓰고이 두 버전의 파일을 비교하고 선택적으로 원하는 최종 파일을 선택하도록하려면 어떻게해야합니까?

또는 내가해야 할 일에 대한 다른 아이디어?

답변

1

git은 두 파일을 병합 할 때 두 개의 상위 분기에서 변경된 영역이 겹치지 않으면 대개 충돌없이 새 파일에 자동으로 변경 내용을 자동으로 추가 할 수 있습니다. 이 경우에, 당신은 몇 가지 옵션이 있습니다 :

  • 당신, git merge --no-commit 수 당신에게 변경 사항을 검토하고 다음 병합을 완료하기 위해 수동 git commit을하기 전에 조정이 필요 할 수있는 기회를 제공합니다.
  • 반대쪽에서 변경 한 사항이 위조 된 것으로 알고 완전히 무시하려는 경우 git merge -s ours을 사용하여 파일 버전을 유지할 수 있습니다.

또 하나주의해야 할 점은 git s rerere 메커니즘입니다. 보통은 기본적으로 활성화되어 있지 않습니다. 그러나 그렇다면 수동 충돌 해결에주의를 기울여야하며 특정 충돌이 다시 나타나면 자동으로 동일한 해결 방법이 적용됩니다. 이 경우 첫 번째 경우와 마찬가지로 git merge --no-commit을 사용하여 커밋하기 전에 원하는 결과를 얻을 수 있는지 확인할 수 있습니다.

0

Git은 당겨 받기/밀어 넣기를 수행하므로 일반적으로 단일/선택된 파일이 아닌 전체 저장소에 대해이 작업을 수행합니다. 따라서 병합 충돌이 아닌 경우 PULL 작업을 수행하는 경우 변경 사항을 병합하거나 단순히 변경 사항을 대체합니다.

가능한 방법은 다른 지점에서 동기화 또는 비교를 수행하고 파일을 수동으로 병합하는 것입니다.