1

git pull の代わりに git fetch を実行したかったのです。しかし、フェッチを行ったとき、「この」ファイルにはマージが必要などのことはまったく言及されていませんでした。なぜそうなのか。これらのファイルをマージする必要があることを知ることができない場合、git fetch はどのような目的で解決しますか

4

2 に答える 2

4

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? )。

于 2012-08-27T22:59:13.180 に答える
1

git fetch は変更をダウンロードしますが、マージは行いません。git pull はそれを行います。git マージが何をするかをプレビューしたいですか? 次に、これを参照してください: git でマージをプレビューするにはどうすればよいですか?

失敗した git マージを元に戻すのはとても簡単なので、個人的には git マージを実行して、どのような競合が発生するかを確認します。ほとんどの場合、マージは驚くほどうまくいきます。競合が多すぎたり気が変わったりした場合は、簡単に git マージを元に戻すことができます。

git reset --hard HEAD

Git を使用すると、さまざまなことを簡単に試すことができます。恐れるな。

于 2012-08-27T22:42:38.933 に答える