Datang ke pendekatan ini (dan mungkin persis sama dengan menggunakan rebase interaktif) tetapi bagi saya itu agak mudah.
Catatan: Saya menyajikan pendekatan ini demi ilustrasi apa yang dapat Anda lakukan daripada alternatif sehari-hari. Karena memiliki banyak langkah (dan mungkin beberapa peringatan.)
Katakanlah Anda ingin mengubah komit 0
dan Anda sedang aktiffeature-branch
some-commit---0---1---2---(feature-branch)HEAD
Periksa komitmen ini dan buat a quick-branch
. Anda juga dapat mengkloning cabang fitur Anda sebagai titik pemulihan (sebelum memulai).
?(git checkout -b feature-branch-backup)
git checkout 0
git checkout -b quick-branch
Anda sekarang akan memiliki sesuatu seperti ini:
0(quick-branch)HEAD---1---2---(feature-branch)
Panggung berubah, sembunyikan yang lainnya.
git add ./example.txt
git stash
Lakukan perubahan dan checkout kembali ke feature-branch
git commit --amend
git checkout feature-branch
Anda sekarang akan memiliki sesuatu seperti ini:
some-commit---0---1---2---(feature-branch)HEAD
\
---0'(quick-branch)
Rebase feature-branch
ke quick-branch
(menyelesaikan konflik di sepanjang jalan). Terapkan simpanan dan hapus quick-branch
.
git rebase quick-branch
git stash pop
git branch -D quick-branch
Dan Anda berakhir dengan:
some-commit---0'---1'---2'---HEAD(feature-branch)
Git tidak akan menggandakan (walaupun saya tidak bisa mengatakan sampai sejauh mana) 0 komit ketika rebasing.
Catatan: semua hash komit diubah mulai dari komit yang semula ingin kami ubah.