GNU/Linux >> Linux の 問題 >  >> Ubuntu

Git Fetch:定義と例

はじめに

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 リモートリポジトリからコード変更を取得する場合のより安全なオプションです。


Ubuntu
  1. LinuxでのSCPコマンド:使用方法と例

  2. 別のSSHポートを使用したGitリモート追加(22ではない)

  3. Git ブランチのローカルおよびリモートの名前を変更する方法

  1. ローカルおよびリモートのGitブランチの名前を変更する方法

  2. リポジトリからGitリモートを削除する方法

  3. ローカルの git リポジトリがリモートの前後にあるかどうかを確認する

  1. Gitを更新する方法

  2. Gitとは何ですか?

  3. Gitリポジトリとは何ですか?