git fetch と git pull は両方とも、リモート リポジトリをローカル リポジトリに更新できます。では、両者の違いは何ですか? この問題を明確にするために、いくつかの概念について説明する必要があります。
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
フェッチするリモートを手動で指定するだけです。ブランチが指定されていない場合、通常はデフォルトのマスター
(3) git fetchorigin dev
リモート リモートと FETCH_HEAD を指定し、このブランチのコミットのみをプルします。
このコマンドは、リモート ウェアハウスにアクセスし、まだ持っていないすべてのデータを取得します。実行が完了すると、そのリモート リポジトリ内のすべてのブランチへの参照が作成され、いつでもマージまたは表示できます。
git clone コマンドを使用してウェアハウスのクローンを作成する場合、コマンドは自動的にウェアハウスをリモート ウェアハウスとして追加し (git Remote -v)、デフォルトで省略形として「origin」を使用します。したがって、 git fetchorigin は、クローン (または最後のフェッチ) 以降に新たにプッシュされたすべての作業をフェッチします。 git fetch コマンドはローカル リポジトリにデータを取り込むことに注意することが重要です。現在の作業を自動的にマージしたり変更したりするわけではありません。準備ができたら、ジョブに手動で組み込む必要があります。
リモート ブランチを追跡するようにブランチを設定している場合は、git pull コマンドを使用して、リモート ブランチを自動的にフェッチし、現在のブランチにマージできます。これは、あなたにとっては簡単または快適なワークフローかもしれません。デフォルトでは、git clone コマンドは、クローンされたリモート リポジトリのマスター ブランチ (またはデフォルト ブランチの名前) を追跡するようにローカル マスター ブランチを自動的に設定します。 git pull を実行すると、通常、元のクローンサーバーからデータが取得され、現在のブランチへのマージが自動的に試行されます。
git pull: まず、ローカルの FETCH_HEAD レコードに基づいて、ローカルの FETCH_HEAD レコードとリモート ウェアハウスのバージョン番号を比較します。その後、git fetch はリモート ウェアハウスの後続のバージョン データを取得します。現在指しているブランチを作成し、 git merge を使用してローカルの現在のブランチとマージします。したがって、git pull は、git fetch と git merge の 2 つのステップを組み合わせたものであると考えることができます。
git pull の使用法は次のとおりです:
git pull <远程主机名> <远程分支名>:<本地分支名> //取回远程主机某个分支的更新,再与本地的指定分支合并。
したがって、git pull と比較すると、git fetch はリモートからローカルに最新バージョンを取得するのと同等ですが、自動的にマージされません。選択的にマージする必要がある場合は、git fetch を選択することをお勧めします。効果が同じなら git pull の方が速いです。
注: git pull を使用してコードを更新するのは、比較的単純かつ暴力的です。ただし、コミット ID に基づいて、実際の実装原則は異なるため、git pull は使用しないでください。git fetch と git merge を使用してください。より簡単に、安全に。
推奨チュートリアル:「Git」
以上が「git fetch」と「git pull」の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。