2012-11-27 2 views
84

내가 merge git이고 병합 충돌이 있다고 가정 해 보겠습니다.병합 중에 항상 최신 버전을 선택하도록 강제 하시겠습니까?

내 질문은 : 어떻게하면 항상 충돌로 최신 버전의 코드를 선택하도록 할 수 있습니까? 그렇다면 손으로 충돌을 해결할 필요가 없습니까?

+0

가능한 중복 (HTTP ://stackoverflow.com/questions/4785107/git-pull-from-remote-can-i-force-it-to-overwrite-rather-than-report-conflicts) – Rawkode

+0

하지만 병합을 수행하고 싶습니다. 커밋을 덮어 쓰지 않습니다.)뿐만 아니라 충돌을 자동으로 해결할 수 있습니다. – bartek

답변

160

정확히 "최신"버전은 아니지만, git merge branch -X theirs을 사용하여 병합중인 버전의 버전을 선호하거나 git merge branch -X ours을 사용하는 현재 분기의 버전을 항상 선호하도록 git에 지시 할 수 있습니다. man git-merge에서

:이 사용

ours:

This option forces conflicting hunks to be auto-resolved cleanly by favoring our version. Changes from the other tree that do not conflict with our side are reflected to the merge result. For a binary file, the entire contents are taken from our side.

theirs:

This is the opposite of "ours".

+7

'ours'-'theirs' !! 그냥 말하면 명령이하는 일을 이해할 수 있습니다! 나는 힘내를 사랑한다! : D – Haywire

+9

note :'git merge branch'를 이미 사용했다면, 이것을하기 전에'git merge --abort'가 필요합니다. –

+1

나를 위해 작동하지 않습니다. 병합을 중단합니다. 'error : 다음과 같은 untracked 작업 트리 파일들은 merge에 의해 덮어 씌어 질 것입니다 :'나는이 파일들이 왜이 지점에 있는지 처음부터 알지 못합니다. 그러나 덮어 써야하고 git은 거부합니다. – mcv

15

,

git fetch --prune 
git reset --hard origin/master 
[원격에서 자식 풀 .. 내가 보고서 충돌보다는 덮어 쓰기를 강제 할 수 있습니까?]의
+1

이 솔루션은 내가 원할 때 마스터 브랜치로 오버라이드하는 경우 병합되지 않은 충돌을 해결하는 데 도움이되었습니다. 자식 재설정 사용 - 하드 마스터 (로컬에서) –