2017-12-06 22 views
-1

私は次のシナリオを持っています:git fetch updateローカルブランチはなぜですか?

私のローカルブランチと同じ私のリモートブランチを持っています。それから、リモートブランチでいくつかの変更を行い、ローカルブランチでいくつかの変更を加えました。

git fetchを実行して自分のローカルブランチを同期させ、の違いを確認してからを確認してからすべてを押しますが、それはうまくいきません! (git fetchは、前にリモートブランチで行われた変更を得ていないようです) 私はgit pullがこれを "修正"していると知っていますが、git push -fですが、コミットする前に変更を確認したいと思います。

git fetchが期待どおりに機能しないのはなぜですか?あるいは、コミットする前に違いを見直すにはどうすればいいですか?

+0

@SurajRaoまあ、このシナリオではなぜこのシナリオでは2つのコマンドの違いよりもうまくいきませんでしたか?もっと詳しく質問しました – bakeiro

+1

それは、実際に尋ねられたことはありますが、プルとフェッチの違いをあなたが本当に理解していれば、あなたの期待は異なっていて、フェッチが期待どおりに機能しなかったとは思わないでしょう。 –

+0

'git fetch'は* changes *を取得しません(そして実際にはブランチは*変更を保持しません)。 'git fetch'が得られるものは*コミット*です(そして各ブランチ名、またはGitの他の名前は*単に特定のコミット*を指します)。 – torek

答えて

0

git fetchダウンロードはリモートブランチからコミットされますが、ワークスペースは更新されません。ローカルブランチにマージされるまで、コミットは表示されません。

git pullgit fetchgit mergeの組み合わせです - これがgit pullがこの動作を「修正」している理由です。

1

ローカルブランチとリモートブランチのマージ前の相違点を表示するには、git fetchを実行した後にthis questionに概要を示すようにgit diffを使用できます。

ローカルブランチでリモートブランチのマージを実行し、すぐに結果を確認できるようにしたい場合は、git pull --no-commit(説明はon git-scm.com)を使用できます。 --no-commitオプションは、Gitがプルの一部である可能性のあるマージを自動的にコミットするのを防ぎます。これにより、マージ結果をコミットする前に確認することができます。

関連する問題