1. ホーム
  2. git

[解決済み] 別のブランチからのすべての変更を単一のコミットとしてマージ(squash付き)する

2022-03-18 23:29:37

質問

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

私はしばしば別のブランチで新機能の開発に取り組み、定期的にコミット/プッシュを行います - 主にバックアップのため、あるいは作業中のものを別のマシンに移すためです。 大抵の場合、これらのコミットには "機能 xxx WIP" とか冗長なことが書かれています。

その作業が終わり、WIPブランチをmasterにマージする際には、それらの中間コミットをすべて破棄し、単一のクリーンなコミットだけにしたいと思います。

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

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

解決方法は?

もう一つの方法は git merge --squash <feature branch> を行い、最後に git commit .

から Git マージ

--squash

--no-squash

作業ツリーとインデックスの状態を、あたかも本当のマージのように生成する が発生しました(ただし、マージ の情報) を提供しますが、実際には をコミットしたり HEAD また $GIT_DIR/MERGE_HEAD を実行すると、次の git commit コマンドでマージ コミットします。これによって 現在の ブランチと同じ効果をもたらします。 別のブランチをマージする の場合はタコ)。