`--no-ff` フラグは `git merge` にどのような影響を与えますか? 質問する

`--no-ff` フラグは `git merge` にどのような影響を与えますか? 質問する

を使用した場合、gitk logの効果の違いを見つけることができませんでした。 違いを観察するにはどうすればよいでしょうか (git コマンドまたは何らかのツールを使用)?git mergegit 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、エラーが発生した場合は戻ってマージするかリベースするかを決定できます。

おすすめ記事