Git 리모컨에서 가져올 때 원격 변경 사항을 사용하여 충돌 해결


297

GitHub 리포지토리에서 서버로 코드를 가져 오려고하지만 병합 충돌로 인해 풀이 계속 실패합니다. 마지막 풀 이후 로컬 서버에서 발생한 변경 사항을 유지하고 싶지 않습니다.

그래서 Git이 GitHub에있는 버전으로 덮어 쓰도록 강제 할 수있는 방법이 있습니까?



4
@nvm : 아뇨. 덮어 쓰지 않은 추적되지 않은 파일이 아니라 실제 병합 충돌에 관한 것입니다.
Cascabel

답변:


491

로컬로 만든 커밋 을 무시하고 다시는 역사에 다시 넣지 않으려면 끌어 오기 방법을 묻지 않고 병합을 의미하므로 병합 할 필요가 없습니다. 당신이해야 할 일은 이것입니다 :

# fetch from the default remote, origin
git fetch
# reset your current branch (master) to origin's master
git reset --hard origin/master

개인적으로 현재 HEAD에서 백업 브랜치를 먼저 생성하는 것이 좋습니다. 이것이 나쁜 생각임을 깨달았을 때, 당신은 그것을 잊어 버리지 않았습니다.

반면에 커밋을 유지하고 원점과 병합 된 것처럼 보이게하고 병합으로 인해 버전을 원점에서만 유지하려면 ours병합 전략을 사용할 수 있습니다 .

# fetch from the default remote, origin
git fetch
# create a branch at your current master
git branch old-master
# reset to origin's master
git reset --hard origin/master
# merge your old master, keeping "our" (origin/master's) content
git merge -s ours old-master

1
git 명령의 두 번째 블록에는 두 번째 명령 뒤에 'git fetch origin'이 있어야합니까?
David Tuite

@David : 예, 어느 시점에서 원점에서 가져와야합니다. 죄송합니다. 암시 적으로 간주했습니다.
Cascabel

2
그것이 나와 git ;-)와 관련하여 암시 할 수있는 것은 없습니다. 진심으로, 백만 감사합니다. 당신의 대답은 내가 찾던 것입니다.
데이비드 투이 트

1
원점이 실제로 앞선다면 이것이 효과가 있습니까? 에서와 같이 미리 커밋이 없으면 실제로 사용할 수 있습니까? 실제로 지점을 빨리 감을 수 있습니까?
자레드 포 시스

1
감사! 쉬워 보였습니다.
sholsinger

137

nvm이 가리키는 중복 링크의 응답을 사용할 수 있습니다.

또는 변경 사항을 사용하여 충돌을 해결할 수 있습니다 (그러나 일부 변경 사항은 원격 버전과 충돌하지 않는 경우 유지 될 수 있음).

git pull -s recursive -X theirs

3
나를 위해 일하지 않는 것 같습니다. git git 버전 1.5.6.5를 사용하여 "오류 : 알 수없는 스위치`X '"가 표시됩니다. 불안정한 버전으로 업그레이드해야합니까?
David Tuite

또한 Antoine은 충돌 콘텐츠뿐만 아니라 원본의 모든 버전을 원한다면 내 대답을 볼 수 있습니다.
Cascabel

2
@David

2
이것이 바로 내가 찾던 것입니다!
micahblu

2
@CeesTimmerman 적어도 최신 git에서는 사실이 아닙니다. X옵션은입니다 병합 전략을 통해 전달되는 recursive명령 불평 있도록 두 개의 머리를 병합하는 경우 "Could not find merge strategy 'theirs'. Available strategies are: octopus ours recursive resolve subtree."- 그것은 부끄러운 때문에 X(예를 들어, 설정에서 설정할 수 있습니다 git config pull.twohead theirs)하지만 s할 수 없습니다.
OJFord
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.