>  기사  >  개발 도구  >  "git fetch"와 "git pull"의 차이점

"git fetch"와 "git pull"의 차이점

Guanhui
Guanhui앞으로
2020-07-22 17:59:283092검색

git fetch와 git pull은 모두 원격 저장소를 로컬 저장소로 업데이트할 수 있습니다. 그러면 이 문제를 명확히 하기 위해 언급해야 할 몇 가지 개념이 있습니다.

FETCH_HEAD: 는 로컬 파일에 기록된 버전 링크로, 원격 창고에서 내려온 지점의 최종 버전을 가리킵니다.

commit-id: 각 로컬 작업이 완료된 후 현재 작업을 로컬 저장소에 저장하기 위해 git commit 작업이 수행됩니다. 이때 커밋 ID가 생성됩니다. 버전. git push를 사용한 후에는 이 일련 번호가 원격 창고에도 동기화됩니다.

위의 개념을 가지고 git fetch에 대해 이야기해 봅시다

git fetch: 이것은 git 원격의 모든 원격 웨어하우스에 포함된 브랜치의 최신 커밋 ID를 업데이트하고 .git/FETCH_HEAD 파일에 기록합니다
git fetch가 원격 웨어하우스를 업데이트하는 방법은 다음과 같습니다.

git fetch origin master:tmp 
//在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
git diff tmp 
//来比较本地代码与刚刚从远程下载下来的代码的区别
git merge tmp
//合并temp分支到本地的master分支
git branch -d temp
//如果不想保留temp分支 可以用这步删除

(1) git fetch를 직접 사용하는 경우 단계는 다음과 같습니다.

  • 로컬 원격 브랜치를 생성하고 업데이트합니다. 즉, Origin/xxx 분기를 생성 및 업데이트하고 코드를 Origin/xxx 분기로 가져옵니다.

  • FETCH_HEAD에서 현재 분기-원본/현재 분기 대응을 설정합니다. git merge를 직접 수행하면 원본/abc를 abc 분기에 병합할 수 있습니다.

(2) git fetch Origin
가져올 리모콘을 수동으로 지정하면 됩니다. 브랜치를 지정하지 않으면 일반적으로 기본적으로 master

(3) git fetch Origin dev
remote 원격 및 FETCH_HEAD를 지정하고 이 브랜치의 커밋만 가져옵니다.

이 명령은 원격 창고에 액세스하여 아직 가지고 있지 않은 모든 데이터를 가져옵니다. 실행이 완료되면 해당 원격 저장소의 모든 분기에 대한 참조를 갖게 되며 언제든지 병합하거나 볼 수 있습니다.

git clone 명령을 사용하여 리포지토리를 복제하면 이 명령은 해당 리포지토리를 자동으로 원격 리포지토리로 추가하고(git remote -v) 기본적으로 "origin"을 약어로 사용합니다. 따라서 git fetch Origin은 복제(또는 마지막 가져오기) 이후 새로 푸시된 모든 작업을 가져옵니다. git fetch 명령은 데이터를 로컬 저장소로 가져옵니다. 현재 작업을 자동으로 병합하거나 수정하지는 않습니다. 준비가 되면 작업에 수동으로 통합해야 합니다.

원격 브랜치를 추적하도록 브랜치를 설정한 경우 git pull 명령을 사용하여 자동으로 원격 브랜치를 가져와서 현재 브랜치에 병합할 수 있습니다. 이는 더 쉽고 편안한 작업 흐름일 수 있습니다. 기본적으로 git clone 명령은 복제된 원격 저장소의 마스터 브랜치(또는 기본 브랜치가 호출되는 모든 것)를 추적하도록 자동으로 로컬 마스터 브랜치를 설정합니다. git pull을 실행하면 일반적으로 원래 복제된 서버에서 데이터를 가져오고 자동으로 현재 분기에 병합을 시도합니다.

git pull: 먼저 로컬 FETCH_HEAD 레코드를 기반으로 로컬 FETCH_HEAD 레코드를 원격 웨어하우스의 버전 번호와 비교한 후 git fetch를 사용하여 현재 가리키는 원격 브랜치의 후속 버전 데이터를 가져온 다음 git merge를 사용하여 병합합니다. 로컬 현재 분기와 병합합니다. 따라서 git pull은 git fetch와 git merge의 두 단계를 조합한 것이라고 볼 수 있습니다.

git pull의 사용법은 다음과 같습니다.

git pull <远程主机名> <远程分支名>:<本地分支名>
//取回远程主机某个分支的更新,再与本地的指定分支合并。

따라서 git pull과 비교할 때 git fetch는 원격에서 로컬로 최신 버전을 가져오는 것과 동일하지만 자동으로 병합되지는 않습니다. 선택적으로 병합해야 한다면 git fetch가 더 나은 선택입니다. 효과가 동일하면 git pull이 더 빨라집니다.

참고: git pull을 사용하여 코드를 업데이트하는 것은 비교적 간단하고 폭력적입니다. 그러나 커밋 ID에 따라 실제 구현 원칙이 다르므로 git pull을 사용하지 않는 것이 더 안전합니다.

추천 튜토리얼: "Git"

위 내용은 "git fetch"와 "git pull"의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
이전 기사:GIT 분기 및 병합다음 기사:GIT 분기 및 병합