Bu yaklaşıma geldi (ve muhtemelen interaktif rebase kullanmakla tamamen aynı), ancak benim için biraz basit.
Not: Bu yaklaşımı, günlük bir alternatiften ziyade neler yapabileceğinizi göstermek amacıyla sunuyorum. Birçok adım (ve muhtemelen bazı uyarılar) olduğundan.
Taahhüt değiştirmek istediğinizi 0
ve şu anda devam ettiğinizi varsayalımfeature-branch
some-commit---0---1---2---(feature-branch)HEAD
Bu taahhüdü kontrol edin ve bir oluşturun quick-branch
. Ayrıca özellik dalınızı kurtarma noktası olarak klonlayabilirsiniz (başlamadan önce).
?(git checkout -b feature-branch-backup)
git checkout 0
git checkout -b quick-branch
Şimdi böyle bir şey olacak:
0(quick-branch)HEAD---1---2---(feature-branch)
Sahne değişiyor, her şeyi saklıyor.
git add ./example.txt
git stash
Değişiklikleri yapın ve ödeme işlemini tekrar yapın feature-branch
git commit --amend
git checkout feature-branch
Şimdi böyle bir şey olacak:
some-commit---0---1---2---(feature-branch)HEAD
\
---0'(quick-branch)
Rebase feature-branch
üzerine quick-branch
(yol boyunca herhangi çatışmaları çözmek). Zımba uygulayın ve çıkarın quick-branch
.
git rebase quick-branch
git stash pop
git branch -D quick-branch
Ve sonunda:
some-commit---0'---1'---2'---HEAD(feature-branch)
Git, tekrarlama yaparken 0'ı ne ölçüde söyleyemesem de çoğaltmayacak.
Not: Tüm taahhüt karmaları, ilk başta değiştirmek istediğimiz taahhütten başlayarak değiştirilir.