2011-11-29 2 views
2

을 커밋하지 않고 나는포스 GIT 당겨

git pull 

을하고 내가 병합 충돌을 얻을. 나는 병합 충돌을 수동으로 해결하고 pull을 다시 시도하지만 Git은 병합 충돌이 여전히 있다고 생각하기 때문에이를 거부한다.

강제로 Git이 다시 당기기를 수행하도록하고 내가 만든 변경 사항을 적용하지 않고 헤드에서 "diffs"(있는 경우)를 찾도록 할 방법이 있습니까?

답변

3

왜 병합 충돌을 처음부터 수정 한 후에 두 번째 git pull을 발행하고 있습니까? 그건 말이 안돼. 병합 충돌을 해결하면 git commit 대신 원격 지점을 로컬 지점과 병합하는 병합 커밋을 만듭니다 (충돌 해결 포함).

+0

동의 함. 병합 충돌이 더 이상 발생하지 않도록하는 방법을 궁금해하고있었습니다. git pull의 "Already up to date"메시지는 매우 안심입니다. – Jean

+0

@alertjean :'git status' 만 실행하면됩니다. 모든 미해결 분쟁에 대해 알려 드릴 것입니다. 남은 갈등이 있다면'git commit'은 커밋하지 않습니다. 또한'git mergetool'을 사용하면 모든 충돌을 처리 할 수 ​​있습니다. –

0

과정은 여기에 있습니다 :

git pull 

당신은 분쟁의 통지를 얻을. 당신은 무엇이든 사용합니다. 그러나 git difftool을 로컬로 사용하는 데 필요한 모든 것을 연결했으면 좋겠지 만 ...

이제 충돌이 해결되면 원격 변경 사항과 로컬의 병합 된 작업 디렉토리가 생깁니다. 변경. 다르다있는 유일한 방법은, 자식은 당신의 도움이 자체적으로 병합 할 필요 없습니다.

당신에게 지금

git commit 

새로운 로컬의 repo에 커밋 만들 그 합은 끌어온 원격 변경 사항과 현지 변경 내용을 확인한 다음

git push 

변경 사항을 게시하고 원격 헤드와 잘 결합했습니다.

1

충돌을 해결하고 다시 푸시 한 후에 변경 사항을 커밋해야합니다. 보통 git pull 대신 git fetch을 입력 한 다음 git merge을 입력 한 다음 git commit을 입력하면됩니다. 이렇게하면 업스트림 변경 사항 만 가져오고 충돌을 수동으로 병합 및 해결 한 다음 로컬로 커밋 할 수 있습니다. 준비가되면 변경 사항을 다시 업스트림으로 푸시합니다. 당신은 당신이 할 수이 워크 플로우를 사용하는 경우

:

중독에서
git fetch 
git merge 
#resolve conflicts 
git commit 
git fetch #check for new changes 
#eventually 
git push 
0

후, 당겨 합병 노력을, 당신은 또한 시도 할 수

git remote show origin 
(리모컨을 가정하는 것은 물론 '기원'이다)

나를 위해 매우 안심입니다!