タイトルにあるように、git merge --squash
とgit merge --no-commit
の違いについてはあまり明確ではありません。
git merge
のヘルプページを理解している限り、両方のコマンドは更新された作業ツリーに残り、そこで編集してから最終コミット(または複数のコミット)を行うことができます。
誰かがこれら2つのオプションの違いを明確にできますか?いつ他の代わりに一方を使用しますか?
git merge --no-commit
これは通常のマージと似ていますが、マージコミットは作成しません。このコミットはマージコミットになります。履歴を見ると、コミットは通常のマージとして表示されます。
git merge --squash
これにより、マージコミットを作成せずに、変更が作業ツリーにマージされます。マージされた変更をコミットすると、ブランチでの新しい「通常の」コミットのようになります。履歴にマージコミットはありません。マージされたすべての変更についてチェリーピックをしたようなものです。