ホームページ  >  記事  >  開発ツール  >  「git fetch」と「git pull」の違い

「git fetch」と「git pull」の違い

Guanhui
Guanhui転載
2020-07-22 17:59:283092ブラウズ

「git fetch」と「git pull」の違い

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 サイトの他の関連記事を参照してください。

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