マイクロコミットを非表示にするにはどれを使用すればよいでしょうか?
唯一の違いはgit merge --squash
、git merge --no-ff --no-commit
他の親の否定でしょうか?
ベストアンサー1
違い
これらのオプションは別々の目的のために存在します。リポジトリの最終的な結果は異なります。
トピック ブランチでの開発が完了した後、リポジトリが次のようになっているとします。
--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
。上の画像からわかるように、squash を行わないとマイクロコミットを実際に隠すことはできません。また、トピック ブランチを一般に公開することは通常ありません。トピック ブランチはトピックを成熟させるためのものです。
履歴にすべてのマイクロコミットを残したいが、それらを別の開発ライン (上の画像の緑の線) に残したい場合は、 を使用します--no-ff --no-commit
。ただし、a) これはブランチではないこと、b) これはコミットの別の親にすぎないため、Git では実際には何も意味しないことに注意してください。
参照Git ブランチ - ブランチとは何か本当に理解したいのであれば。