Git'te geçmiş bir işlemde tek bir dosyayı değiştirmeyi okudum ama ne yazık ki kabul edilen çözüm, taahhütleri 'yeniden sıralıyor', ki bu istediğim şey değil. İşte sorum şu:
Arada sırada, (ilgisiz) bir özellik üzerinde çalışırken kodumda bir hata fark ediyorum. Daha git blame
sonra hızlı bir şekilde , hatanın birkaç işlemden önce tanıtıldığı ortaya çıkar (Oldukça fazla işlem yaparım, bu nedenle genellikle hatayı ortaya çıkaran en son işlem değildir). Bu noktada, genellikle şunu yapıyorum:
git stash # temporarily put my work aside
git rebase -i <bad_commit>~1 # rebase one step before the bad commit
# mark broken commit for editing
vim <affected_sources> # fix the bug
git add <affected_sources> # stage fixes
git commit -C <bad_commit> # commit fixes using same log message as before
git rebase --continue # base all later changes onto this
Ancak, bu o kadar sık olur ki, yukarıdaki sıra sinir bozucu hale geliyor. Özellikle 'etkileşimli geri ödeme' sıkıcı. Yukarıdaki sekans için, aşamalı değişikliklerle geçmişte keyfi bir işlemi değiştirmeme izin veren herhangi bir kısayol var mı? Bunun tarihi değiştirdiğinin tamamen farkındayım, ancak o kadar sık hata yapıyorum ki gerçekten böyle bir şey olmasını çok isterim
vim <affected_sources> # fix bug
git add -p <affected_sources> # Mark my 'fixup' hungs for staging
git fixup <bad_commit> # amend the specified commit with staged changes,
# rebase any successors of bad commit on rewritten
# commit.
Belki sıhhi tesisat araçlarını kullanarak taahhütleri yeniden yazabilen akıllı bir komut dosyası olabilir mi?
rebase -i
?
rebase --onto tmp bad-commit master
. Yazıldığı gibi, kötü taahhüdü sabit taahhüt durumuna uygulamaya çalışacaktır.