別のブランチからのすべての変更を単一のコミットとしてマージ(squashを使用)する 質問する

別のブランチからのすべての変更を単一のコミットとしてマージ(squashを使用)する 質問する

Git では、あるブランチから別のブランチにすべての変更をマージし、同時に 1 つのコミットにまとめる方法はありますか?

私は別のブランチで新しい機能に取り組むことが多く、定期的にコミット/プッシュを行います。主な目的は、バックアップのため、または作業中のものを別のマシンに転送するためです。ほとんどの場合、これらのコミットには「Feature xxx WIP」などの冗長な内容が書かれています。

作業が完了し、WIP ブランチをマスターにマージし直したい場合、中間コミットをすべて破棄し、クリーンなコミットを 1 つだけにしたいと思います。

これを行う簡単な方法はありますか?

あるいは、ブランチが作成された時点以降のブランチ上のすべてのコミットを圧縮するコマンドはどうでしょうか?

ベストアンサー1

もう 1 つのオプションはgit merge --squash <feature branch>、最終的に を実行することですgit commit

からGitマージ

--squash

--no-squash

実際のマージが行われたかのように作業ツリーとインデックス状態を生成します (マージ情報を除く)。ただし、実際にコミットを作成したり、 を移動したり、次のコマンドでマージ コミットが作成されるようにHEAD記録したりすることはありません。これにより、現在のブランチの上に、別のブランチ (タコの場合はそれ以上) をマージするのと同じ効果を持つ単一のコミットを作成できます。$GIT_DIR/MERGE_HEADgit commit

おすすめ記事