を使用した場合、とgitk log
の効果の違いを見つけることができませんでした。 違いを観察するにはどうすればよいでしょうか (git コマンドまたは何らかのツールを使用)?git merge
git merge --no-ff
ベストアンサー1
この--no-ff
フラグはgit merge
、現在のHEAD
コミットがマージしようとしているコミットの祖先であることが検出された場合に、「fast-forward」の実行を防止します。fast-forward とは、マージ コミットを構築する代わりに、git がブランチ ポインターを移動して、着信コミットを指すようにすることです。これは通常、git pull
ローカルの変更を行わずに を実行する場合に発生します。
ただし、特定のブランチ トポロジを維持したい場合 (たとえば、トピック ブランチでマージしていて、履歴の読み取り時にそのように見えるようにしたい場合) など、この動作が発生しないようにしたい場合があります。これを行うには、フラグを渡す--no-ff
と、早送りではなく常にgit merge
マージが構築されます。
git pull
同様に、明示的に早送りするためにまたは を実行しgit merge
、早送りできない場合は中止したい場合は、 フラグを使用できます--ff-only
。この方法により、何も考えずに のような操作を定期的に実行しgit pull --ff-only
、エラーが発生した場合は戻ってマージするかリベースするかを決定できます。