git pull の代わりに git fetch を実行したかったのです。しかし、フェッチを行ったとき、「この」ファイルにはマージが必要などのことはまったく言及されていませんでした。なぜそうなのか。これらのファイルをマージする必要があることを知ることができない場合、git fetch はどのような目的で解決しますか
2 に答える
anio の正解を拡張するには、リモート トラッキング ブランチgit fetch
と呼ばれるものを更新します。リモート追跡ブランチは、リモート サーバー上にあるもののプロキシと考えることができます。たとえば、リポジトリのクローンを作成したときに、そこに 3 つのコミットがあったとします。
+----------------------------------+
| Remote repository (origin): |
| master: A-B-C |
+----------------------------------+
+-------------------------------------------------------+
| Your repository: |
| remotes/origin/master: A-B-C (remote tracking branch) |
| master: A-B-C (your working branch) |
+-------------------------------------------------------+
ここで、誰かがコミット D と E などの作業を行ってプッシュしたとします。これで、図は次のようになります。
+----------------------------------+
| Remote repository (origin): |
| master: A-B-C-D-E |
+----------------------------------+
+-------------------------------------------------------+
| Your repository: |
| remotes/origin/master: A-B-C (remote tracking branch) |
| master: A-B-C (your working branch) |
+-------------------------------------------------------+
リポジトリは変更されていないことに注意してください。リモート リポジトリへの変更は、リポジトリに自動的にプッシュされません。ただし、そうすると、リモート追跡ブランチのみgit fetch
が更新されます。
+----------------------------------+
| Remote repository (origin): |
| master: A-B-C |
+----------------------------------+
+-----------------------------------------------------------+
| Your repository: |
| remotes/origin/master: A-B-C-D-E (remote tracking branch) |
| master: A-B-C (your working branch) |
+-----------------------------------------------------------+
リモート追跡ブランチにはリモート リポジトリからの最新情報がすべて含まれていますが、作業ブランチは更新されていないことに注意してください。これには、マージが必要なためです (この場合、作業を行っていないため、早送りマージ)。
それだけgit fetch
です。リモート追跡ブランチを更新するだけで、何がマージされるかはわかりません。何がマージされるかを確認するには、記載されている anio のリンクを参照してください ( How can I preview a merge in git? )。
git fetch は変更をダウンロードしますが、マージは行いません。git pull はそれを行います。git マージが何をするかをプレビューしたいですか? 次に、これを参照してください: git でマージをプレビューするにはどうすればよいですか?
失敗した git マージを元に戻すのはとても簡単なので、個人的には git マージを実行して、どのような競合が発生するかを確認します。ほとんどの場合、マージは驚くほどうまくいきます。競合が多すぎたり気が変わったりした場合は、簡単に git マージを元に戻すことができます。
git reset --hard HEAD
Git を使用すると、さまざまなことを簡単に試すことができます。恐れるな。