1. ホーム
  2. git

[解決済み] Gitでプッシュする前に複数のコミットを結合する [重複]。

2022-03-22 06:23:22

質問

私のローカルリポジトリには、テーマ的に類似したコミットが多数あります。リモートにプッシュする前に、それらを一つのコミットにまとめたいと思います。どうすればいいのでしょうか?私はこう思います。 rebase はこれを行うが、私はドキュメントを理解することができません。

どのように解決するのですか?

あなたがやりたいことは、git では "squashing" と呼ばれるものです。 これを行うにはたくさんのオプションがありますが(多すぎますか?)、未プッシュのコミットをすべて一つのコミットにマージしたいだけなら、これを行います。

git rebase -i origin/master

これで、テキストエディタが表示されます( -i は対話型("interactive")のため、次のようなファイルです。

pick 16b5fcc Code in, tests not passing
pick c964dea Getting closer
pick 06cf8ee Something changed
pick 396b4a3 Tests pass
pick 9be7fdb Better comments
pick 7dba9cb All done

をすべて変更します。 pick から squash (または s を除く)。

pick 16b5fcc Code in, tests not passing
squash c964dea Getting closer
squash 06cf8ee Something changed
squash 396b4a3 Tests pass
squash 9be7fdb Better comments
squash 7dba9cb All done

ファイルを保存して、エディタを終了します。 すると、別のテキストエディタが開き、すべてのコミットからのコミットメッセージをひとつの大きなコミットメッセージにまとめることができるようになります。

ほらね。git squashing"でググれば、他のすべてのオプションについての説明が得られます。