2009-11-25 4 views
1

파일을 두 지점에서 모두 편집 할 때 파일에 대한 수동 해결을 강제로 수행하는 방법이 있습니까?힘내 합병 재귀 내가 원하는 것을하지 못하도록

내 문제는 하나의 브랜치의 변경 사항 중 일부와 다른 브랜치의 변경 사항을 원한다는 것입니다. 이러한 변화가 항상 서로 밟는 것은 아니지만 알고리즘이 항상 올바른 변경 사항을 선택하지는 않습니다.

내가 알아챈 한 가지는 3 방향 병합의 기본 파일이 내가 기대했던 것이 아니기 때문입니다. Git이 한 브랜치의 선택된 파일을 기본 파일로 사용할 수 있습니까?

답변

2

git이 파일에서 충돌을 발견하면 충돌을 수정하기 위해 편집 (또는 병합 도구 사용)을 요청할 것입니다. 이 경우에는 준비하기 전에 수정할 수 있습니다.

git이 특정 파일에서 충돌을 감지하지 못했지만 다른 곳에서 충돌을 감지 한 경우 병합 커밋하기 전에 특정 파일을 수정하고 픽스 (git add)를 추가 할 수 있습니다.

이 경우 git show HEAD:path/to/filegit show MERGE_HEAD:path/to/file을 통해 파일의 두 개의 다른 상위 버전에 액세스 할 수 있습니다. git show 출력을 임시 편집기로 리디렉션 할 수 있습니다 (예 : 편집기에서 열 때).

파일을 수정하고 다른 충돌을 해결하면 수정본 (git add)을 병합하고 병합 완료 (git commit) 할 수 있습니다.

git이 커밋을 감지하지 못하면 더 이상의 프롬프트없이 병합 커밋을 수행합니다.

이 경우에도 파일을 수정할 수 있습니다. 두 상위 버전은 git show HEAD:path/to/filegit show HEAD^2:path/to/file을 통해 액세스 할 수 있습니다.

파일을 수정 한 후에는 (git add)을 실행하고 병합 완료를 git commit --amend으로 다시 실행할 수 있습니다.

+0

또한 인덱스의 주어진 스테이지에 액세스하기 위해 (부분적으로 충돌이 해결 된)': 1 : path/to/file' 구문이 있습니다. –

관련 문제