ホームページ  >  記事  >  開発ツール  >  git fetch と git pull の違いを見てみましょう

git fetch と git pull の違いを見てみましょう

coldplay.xixi
coldplay.xixi転載
2021-04-26 16:46:002291ブラウズ

git fetch と git pull の違いを見てみましょう

git fetch と git pull は両方とも、リモート リポジトリをローカル リポジトリに更新できます。では、両者の違いは何ですか? この問題を明確にするために、いくつかの概念について説明する必要があります。

推奨事項 (無料): Git

FETCH_HEAD: ローカル ファイルに記録されているバージョン リンクです。リモート リポジトリから削除されたブランチの最終バージョンに。
commit-id: 各ローカル作業が完了した後、git commit 操作が実行され、現在の作業がローカル リポジトリに保存されます。このとき、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するとorigin/abcをabcブランチにマージできます。

(2) git fetchorigin
フェッチするリモートを手動で指定するだけです。ブランチが指定されていない場合、通常はデフォルトの master
(3) git fetchorigin dev
はリモートのリモートと FETCH_HEAD を指定し、このブランチのコミットのみをプルします。

git pull: まず、ローカルの FETCH_HEAD レコードに基づいて、ローカルの FETCH_HEAD レコードとリモート ウェアハウスのバージョン番号を比較し、次に git fetch はリモート ウェアハウスの後続のバージョン データを取得します。現在指しているブランチを作成し、 git merge を使用してローカルの現在のブランチとマージします。したがって、 は、git pull は、git fetch と git merge の 2 つのステップを組み合わせたものであると考えることができます。
git pull の使用法は次のとおりです:

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

したがって、git fetch は 最新バージョンをリモートからローカルに取得しますが、自動的にはマージされません
そして git pull はすべてのリモート インデックスを取得し、それらをローカル ブランチ にマージします。効果が同じなら git pull の方が速いです。

以上がgit fetch と git pull の違いを見てみましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。