マイクロコミットを非表示にするために使用する必要があるのはどれですか?
唯一の違いはgit merge --squash
、git merge --no-ff --no-commit
他の親の否定ですか?
マイクロコミットを非表示にするために使用する必要があるのはどれですか?
唯一の違いはgit merge --squash
、git merge --no-ff --no-commit
他の親の否定ですか?
これらのオプションは、別の目的のために存在します。あなたのリポジトリは異なったものになります。
トピック ブランチでの開発が完了した後のリポジトリが次のようになっているとします。
--squash
master をチェックアウトしてから をチェックアウトするとgit merge --squash topic; git commit -m topic
、次のようになります。
--no-ff --no-commit
代わりに、これを行うgit merge --no-ff --no-commit; git commit -m topic
と、次のようになります。
本当にマイクロコミットを非表示にしたい (つまり、リポジトリから削除--squash
したい) 場合は、 . 上の画像でわかるように、スカッシュしないとマイクロコミットを実際に隠しているわけではないからです。さらに、通常、トピックブランチを世界にプッシュすることはありません。トピック ブランチは、トピックが成熟するためのものです。
履歴にすべてのマイクロコミットを含めたいが、それらを別の開発ライン (上の画像の緑のライン) に残す場合は、 を使用します--no-ff --no-commit
。ただし、a) これはブランチではなく、b) コミットのもう 1 つの親であるため、Git では実際には何も意味しないことを覚えておいてください。
本当に理解したい場合は、Git Branching - What a Branch Isを参照してください。