はじめに
git fetch
コマンドは、現在のブランチの既存のローカルコードを上書きせずに、オブジェクトをローカルマシンにダウンロードします。このコマンドは、リモートリポジトリの変更の記録を取得し、調整前の進捗履歴を把握できるようにします。
git fetch
の使用方法を学ぶために読んでください 実践的な例を通してコマンドを実行します。
前提条件
- Gitのインストール、更新、構成。
- コマンドライン/ターミナルへのアクセス。
- リモートリポジトリリンクまたはGitリモートが構成されています。
git fetchとは何ですか?
git fetch
コマンドは、リモートリポジトリからコミット、ファイル、ブランチ、およびタグを取得します。コマンドの一般的な構文は次のとおりです。
git fetch <options> <remote name> <branch name>
Gitは、フェッチされたコンテンツをローカルコードから分離します。したがって、フェッチは、ローカルブランチにコミットする前に情報を確認するための安全な方法を提供します。
git fetchコマンドはどのように機能しますか?
git fetch
コマンドは、リモートリポジトリからすべての変更を取得します。フェッチされたメタデータは.gitにあります ディレクトリ、作業ディレクトリは変更されません。
事実上、 git fetch
ローカルで変更を適用せずにメタデータを取得します。 git pullコマンドは、 git fetch
を組み合わせたものです とgitマージ関数を1つに。
作業ディレクトリの状態は影響を受けないため、フェッチされたコンテンツはgit checkoutコマンドでチェックアウトするか、gitmergeでマージする必要があります。
ただし、コンテンツの結合は手動プロセスであるため、 git fetch
何かを変更する前にコードを確認できます。レビュープロセスは、マージの競合を回避するのに役立ちます。
Gitフェッチオプション
以下は、 git fetch
を操作するときに一般的に使用されるオプションのリストです。 :
-すべて
-すべてのリモートをフェッチします。-追加
(-a
)-既存のフェッチされたコンテンツに上書きせずに追加します。-
-depth =
-各リモートブランチ履歴の先端から開始する特定のコミット数に制限します。 -
-deepen =
-各リモートブランチ履歴の現在の境界から先端までの特定のコミット数に制限します。 -
-shallow-since =
-指定された日付以降に到達可能なすべてのコミットを含めます。 -
-shallow-exclude =
-指定されたリモートブランチまたはタグからのコミットを除外します。オプションを複数回使用して、複数の除外を指定します。 -ドライランコード>
-コマンドに追加されたオプションは、コマンドをデモとして実行せずに何が起こるかを示しています。-複数
-複数の<リポジトリまたはグループ>
を許可します 引数。-タグなし
-自動タグフォローを無効にします。-タグ
-リモートからすべてのタグを取得します。-
-set-upstream
-アップストリームトラッキングを追加します。
使用可能なすべてのオプションを表示するには、ターミナルで次のコマンドを実行します。
git fetch --help
このコマンドは、利用可能なすべてのオプションの詳細な説明を含む完全なヘルプページを表示します。
Gitリポジトリを取得する
例では、リモートリポジトリを追加する必要があります。すでにリモートを設定している場合は、次のセクションに進んでください。それ以外の場合は、以下の手順に従ってGitリモートを追加します。
1.ターミナルを開き、プロジェクトのディレクトリを作成します。
mkdir <directory name>
2. cd
を使用してディレクトリに入ります コマンド:
cd <directory name>
3.ローカルリポジトリを次のように初期化します:
git init
4.次のコマンドを使用して、リモートURLをローカルリポジトリに追加します。
git remote add <short remote name> <remote URL>
例:
git remote add origin [email protected]:phoenixNAP-KB/test.git
5.リモートが正常に追加されたことを確認します:
git remote -v
以下のセクションの例に従って、 git fetch
コマンドはさまざまなユースケースで機能します。
リモートリポジトリを取得する
git fetch
を使用する最も簡単な方法 コマンドはリモートリポジトリをフェッチすることです:
git fetch <remote name>
例:
git fetch origin
出力には、ブランチやタグを含む、リモートリポジトリからすべてのコンテンツをフェッチしたコマンドが表示されます。
フェッチされたすべてのリモートブランチを次のように一覧表示します:
git branch -r
フェッチされたすべてのタグを一覧表示するには、次のコマンドを実行します:
git tag
git checkoutコマンドを使用してコンテンツを新しいブランチでローカルに利用できるようにするか、gitmergeを使用してローカルリポジトリ情報を同期します。
特定のブランチを取得する
リポジトリから特定のブランチをフェッチするには、次のコマンドを実行します。
git fetch <remote name> <branch name>
たとえば、 testという名前のブランチをフェッチするには 起源から 、実行:
git fetch origin test
このコマンドは、特定のブランチのコンテンツのみをフェッチします。フェッチしたコンテンツを新しいブランチにチェックアウトするには、次のコマンドを実行します:
git checkout -b test_branch origin/test
コンテンツは、ブランチ test_branchでローカルに利用できるようになりました。 。
すべてのリモートからすべてのブランチを取得する
リモートが複数ある場合は、 git fetch
すべてのリモートから情報を取得するコマンドを提供します。
すべてのリモートを表示するには、次を実行します:
git remote
次のコマンドを使用して、すべてのリモコンからすべてのコンテンツを取得します。
git fetch --all
出力には、すべてのリモートリポジトリからのフェッチプロセスが表示されます。
ローカルリポジトリを同期する
git fetch
を使用します ローカルリポジトリを同期するためのgitmergeを使用したコマンド。以下の手順に従って、例がどのように機能するかを確認してください。
1.次のコマンドでリモートリポジトリを取得します:
git fetch <remote name>
2.コミットの違いをリストして、ローカルブランチとリモートブランチを比較します。
git log --oneline <local branch>..<remote name>/<remote branch name>
たとえば、ローカルブランチが test_branchの場合 リモコンはorigin/ test にあります 、次のコマンドは違いを一覧表示します:
git log --oneline test_branch..origin/test
出力には、コミットと関連するメッセージが一覧表示されます。
3.変更をマージするローカルブランチをチェックアウトします:
git checkout <local branch>
例:
git checkout test_branch
4.ローカルブランチをgitmergeコマンドで同期します:
git merge origin/main
これで、コンテンツはリモートリポジトリで最新になりました。競合の警告がある場合は、チュートリアルに従ってマージの問題を解決してください:Gitでのマージの競合を解決する方法。
gitフェッチ対。 git pull
次の表は、 git fetch
の概要を示しています。 とgitpullコマンドを比較します。
git fetch | git pull |
---|---|
現在のブランチにマージせずにリモートリポジトリから新しい情報をダウンロードします。 | リモートリポジトリからすべての変更をダウンロードし、現在のブランチにマージします。 |
.gitのリポジトリデータを更新します ディレクトリ。 | ローカルリポジトリを直接更新します。 |
コードをコミットする前に、他の開発者からのコミットと変更を確認できます。 | ローカルリポジトリへの変更をすぐにもたらしたり更新したりできます。 |
コマンドの実行時にマージの競合が発生する可能性はありません。 | すぐに解決する必要があるマージの競合の可能性。 |
2つのコマンドのうち、 git fetch
リモートリポジトリからコード変更を取得する場合のより安全なオプションです。