2017-12-06 13 views
-1

다음과 같은 시나리오가 있습니다 :왜 git은 로컬 브랜치를 가져 오지 않습니까?

로컬 브랜치와 동일한 원격 지점이 있습니다. 그런 다음 원격 지점에서 일부 변경을 수행하고 로컬 지점에서 몇 가지 변경 사항을 적용했습니다.

내 생각은 내 로컬 지점을 동기화하기 위해 git fetch을 실행 한 다음 차이점을 확인하고을 확인한 다음 모든 것을 푸시하지만 작동하지 않습니다! (git fetch은 이전에 원격 지점에서 변경된 내용을 얻지 못하는 것 같습니다.) git pull이 실행 중이거나 git push -f이 수정되었지만 커밋 전에 변경 사항을 검토하고 싶습니다.

git fetch이 예상대로 작동하지 않는 이유는 무엇입니까? 또는 커밋 전에 차이점을 어떻게 검토 할 수 있습니까?

+0

@SurajRao 글쎄, 내 질문은이 시나리오에서 예상대로 작동하지 않는 이유에 대한 것입니다.이 두 가지 명령의 차이점보다 많습니다. – bakeiro

+1

글쎄, 나는 그것이 그 질문의 덩어리라는 것에 동의하지 않습니다. 실제로 물어 본 것은 사실이지만, 잡아 당기는 것과 가져 오는 것의 차이를 이해한다면, 당신의 기대는 달라질 것이고, 가져 오기가 예상대로 작동하지 않았다고 생각하지 않을 것입니다. –

+0

'git fetch'는 * changes *를 얻지 못합니다 (그리고 실제로 브랜치는 변경 사항을 유지하지 않습니다). git fetch가 얻는 것은 * 커밋 *입니다 (그리고 각 브랜치 이름이나 Git의 다른 이름은 * 특정 커밋 *을 가리킴). – torek

답변

0

git fetch 다운로드는 원격 지점에서 커밋되지만 작업 영역은 업데이트되지 않습니다. 로컬 브랜치에 병합 될 때까지 커밋을 볼 수 없습니다.

git pullgit fetchgit merge의 조합입니다.이 때문에 git pull이이 동작을 "수정"하는 것입니다.

1

로컬 분기와 원격 분기를 병합하기 전에 차이점을 보려면 git fetch을 실행 한 후 this question에 설명 된대로 git diff을 사용할 수 있습니다.

결과를 검토 할 수 있도록 즉시 커밋하지 않고 원격 분기의 병합을 로컬 분기와 함께 실행하려는 경우 on git-scm.com과 같이 git pull --no-commit을 사용할 수 있습니다. --no-commit 옵션을 사용하면 Git이 끌어 오기의 일부일 수있는 병합을 자동으로 수행하지 못하게하므로 커밋하기 전에 병합 결과를 검토 할 수 있습니다.