Git Fetch: マスタークラス
公開: 2023-02-26 Git fetch
コマンドを使用すると、飛躍する前に調べることができます。 リモート リポジトリに加えられた変更を検出できますが、ローカル ファイルをリモート ファイルで上書きする必要はありません。
git fetch とは何ですか?
Git フェッチとプル
ローカルとリモートのリポジトリを git fetch で同期する
取得したタグをすべて表示
最初に予行演習を行う
単一のブランチをフェッチする方法
すべてのブランチをフェッチ
ローカル ブランチとリモート ブランチの比較
ローカル ブランチとリモート ブランチの同期
半分訓練された子犬
git fetch とは何ですか?
Git のfetch
コマンドは、コミット、ファイル、およびその他の情報をリモート リポジトリからローカル リポジトリに安全にダウンロードします。 他の開発者が行った変更を確認したい場合は、変更を受け入れるように強制することなく、fetch を使用します。 ローカル ファイルは変更されません。 なぜそれが重要なのですか?
開発チームの一員として働いているときは、自分のことをよく考えておく必要があります。 リモートまたは中央リポジトリには、他の開発者が作成してリモート リポジトリにプッシュした変更と新しいブランチが含まれます。
コンピューター上でローカルに変更したファイルのリモート コピーが誰かによって更新された可能性は十分にあります。 気軽にgit pull
を実行してローカル リポジトリを更新すると、不要な変更のマージを自分で処理していることに気付くでしょう。
情報をダウンロードしたら、それを調べて変更内容を確認できます。 これにより、今すぐマージしたいものと、後でマージしたいものについて、情報に基づいた選択を行うことができます。
Git フェッチとプル
git fetch
コマンドはgit pull
コマンドのように動作しますが、ローカル ファイルを上書きする手順はありません。 ローカル リポジトリは更新および同期されますが、変更はローカル リポジトリの作業状態に書き込まれないため、ファイルはそのまま残ります。
別の言い方をすれば、 git pull
コマンドは、 git fetch
直後にgit merge
が続くようなものです。
ローカルとリモートのリポジトリを git fetch で同期する
更新されたすべてのメタデータとコミットをリモート リポジトリからローカル リポジトリにフェッチするには、リモート リポジトリの名前または URL を指定してgit fetch
コマンドを使用します。 デフォルトでは、最初のリモート リポジトリは「origin」と呼ばれます。
git フェッチの起源
単一のリモート リポジトリで作業している場合は、「origin」という単語を省略できます。
git フェッチ
これにより、「元の」リポジトリから更新が取得されますが、変更は作業ファイルにマージされません。 「new-branch」と呼ばれる新しいブランチが取得されていることがわかります。
fetch
コマンドを使用したら、ブランチ コマンドで-r
(リモート) オプションを使用して、リモート上のブランチの完全なリストを表示できます。
git ブランチ -r
これは、リモートが知っているすべてのブランチをリストします。これは、 fetch
の後、ローカル リポジトリにもあります。
取得したタグをすべて表示
同様に、 tag
オプション (「s」なしの「tag」であることに注意してください) を使用して、タグのリストを表示できます。
git タグ
関連: Git リモートを切り替え、追加、および削除する方法
最初に予行演習を行う
git fetch
変更を作業ファイルにマージしませんが、それでもローカル リポジトリを更新します。 fetch
コマンドが実行する変更を、実際には作成せずに確認したい場合は、 --dry-run
オプションを使用します。
git fetch --dry-run
単一のブランチをフェッチする方法
単一のブランチに関する情報を取得するのは簡単です。 コマンド ラインにブランチの名前を追加して、その 1 つのブランチについてのみ知る必要があることをfetch
に伝えます。
ここでは、リモート リポジトリ「origin」からブランチ「mary-feature」を取得するようにfetch
に指示しています。
git fetch オリジン mary-feature
リモート ブランチの詳細と内容がローカル リポジトリにあるので、 git checkout
コマンドを使用して新しいブランチを作成し、リモート ブランチをチェックアウトできます。 このブランチを初めて使用する場合、既存のファイルは上書きされません。
git checkout -b mary-feature origin/mary-feature
すべてのブランチをフェッチ
複数のリモートを使用している場合は、 --all
オプションを使用してすべてのブランチからすべての変更をローカル リポジトリに戻すことで、時間を節約できます。
git フェッチ --all
ローカル ブランチとリモート ブランチの比較
リモート ブランチのファイルがローカル コピーとどのように異なるかを確認するには、 git fetch
使用してから、 git log
コマンドを使用します。
ローカル ブランチとリモート ブランチは、2 つのピリオド「 ..
」で区切られていることに注意してください。 --oneline
オプションは、コミット識別子とコミット メッセージを表示します。
git フェッチ
git log --oneline mary-feature..origin/mary-feature
1 行表示は、ブランチに非常に多くの変更が含まれている場合に便利です。 もう少し情報を表示するには、 --oneline
オプションを省略します。
git log mary-feature..origin/mary-feature
これにより、各コミットの日時、コミット メッセージ、および変更作成者の連絡先が表示されます。
ローカル ブランチとリモート ブランチの同期
リモート ブランチからの変更をローカルの作業ファイルにマージすることにした場合は、これらのコマンドを使用できます。
ブランチをチェックアウトして、それが現在の作業中のブランチであることを確認します..
git checkout mary-feature
ブランチがチェックアウトされ、リモート バージョンの背後にあることがわかりました。 git pull
を使用して更新し、 git status
を使用してステータスを確認できます。
gitプル
git ステータス
ローカル ファイルに変更を加えた場合、Git はブランチをチェックアウトするときに、マージを開始するためにgit pull
を実行する必要があることを通知します。
git checkout mary-feature
単純なgit pull
ファイルの取得とマージのプロセスを開始できます。または、すぐにgit merge
自体を使用することもできます。 正しいブランチで作業していることを確認することから始めます
git checkout mary-feature
現在のブランチをリモート リポジトリのブランチとマージするようにgit
に指示します。解決する必要がある 6 つの異なるコミットがあります。
マージするリモート ブランチを Git に伝える必要があります。
git merge origin/mary-feature
エディターが開き、コミット メッセージを提供できるようになります。 提案されたメッセージを受け入れるか、独自のメッセージを追加できます。 Git が別のエディターを使用するように構成されていない限り、エディターはデフォルトのエディターです。
続行する準備ができたら、変更を保存します。 エディターを閉じると、マージは自動的に続行されます。
競合がなかったため、マージは成功しました。
同じコード行が 2 人以上の開発者によって変更されると、競合が発生します。 その場合、Git は影響を受けるファイルの競合をマークアップします。 それらを順番に確認し、保持する変更を選択する必要があります。
半分訓練された子犬
訓練中の子犬のように、 fetch
要求したものを取得しますが、ドロップしません。 子犬が見せてくれたものが本当に欲しいなら、 pull
必要があります。
関連: Git rebase: 知っておくべきことすべて