8

GIT の仕組みを誤解していたのかもしれません。

私は実行git rebase -i HEAD~10しましたが、10 個のコミットを 1 つにまとめることができました。問題は、押しつぶされたすべてのコミットがまだそこにあることであり、それらをすべて 1 つにマージした後に削除されると思っていました。

これは期待される結果ですか?もしそうなら、履歴を書き直して無駄なコミットを削除できますか (これらの変更は、以前のすべてのコミットが押しつぶされたコミットに既に含まれているため)?

4

3 に答える 3

5

インタラクティブなリベース セッションを開始すると、現在のブランチからの最新の 10 個のコミットのリストが表示されるはずです。

git rebase -i HEAD~10

pick as2i8dw first commit
pick ee361eb second  commit
...
pick b2762sx most recent commit

このファイルを次のように変更する必要があります。

pick as2i8dw first commit
squash ee361eb second commit
...
squash b2762sx most recent commit

git commit次に、変更を保存する必要があります。git log を実行すると、as2i8dwコミットのみが表示され、他の 10 は表示されません。

そうは言っても、これはあなたがしたことですか?

于 2015-07-26T11:03:53.977 に答える
1

問題は、押しつぶされたすべてのコミットがまだそこにあることです

これらのコミットが他の参照 (他のブランチまたはタグ) から引き続きアクセスできる場合、現在のブランチがリベースされた後でも表示されます。

代わりに、.com でコミットを押しつぶしてgit reset --softみてください。
HEAD がまだ 10 件のコミットを参照している場合:

git reset --soft HEAD~10
git commit -m "squashed 10 commits"
于 2015-07-26T11:00:40.140 に答える