Anda dapat menjalankan git rebase --interactive
dan menyusun ulang D sebelum B dan memasukkan squash D ke A.
Git akan membuka editor, dan Anda melihat file seperti ini, mis: git rebase --interactive HEAD~4
pick aaaaaaa Commit A
pick bbbbbbb Commit B
pick ccccccc Commit C
pick ddddddd Commit D
# Rebase aaaaaaa..ddddddd onto 1234567 (4 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
Sekarang Anda mengubah file itu menjadi seperti ini:
pick aaaaaaa Commit A
squash ddddddd Commit D
pick bbbbbbb Commit B
pick ccccccc Commit C
Dan git sekarang akan menggabungkan perubahan A dan D menjadi satu komit, dan menempatkan B dan C sesudahnya. Ketika Anda tidak ingin menyimpan pesan komit D, alih-alih squash
, Anda akan menggunakan fixup
kata kunci. Untuk lebih lanjut fixup
, Anda dapat berkonsultasi dengan git rebase
dokumen , atau memeriksa pertanyaan ini yang memiliki beberapa jawaban bagus.