2009-12-28 19 views
22

'dan beri tüm işlemleri yeniden denemek. Daha önce iyi bir fikir gibi görünen bazı kodlar yaptım, ama aslında işleri daha da kötüleştirdi. Geçmişten gelen değişikliği, yararlı olmadığından kaldırmak istiyorum ve o zamandan beri tüm işleri yeniden yapılandıracağım.GIT en son olmayan bir işlemi geri almak,

hemen önce (newMaster adlandırılır) yeni bir şube oluşturma çalıştı kötü işlemek (gitx ile), dışarı ve koşu kontrol: AFAICS bana yöneticisinde kaydedilmesini bir listesini vermiş olması gerekir

git rebase -i master 

ve onları birleştirmek ya da birleştirmek için bir seçenek değil, ama bunun yerine noop ve hızlı aktarılan newMaster master'a eşit olması gerektiğini söyledi.

İhtiyacım olanı yapmanın en kolay yolu nedir?

cevap

12

git rebase -i doğru komuttur, ancak en son değişikliklerle birlikte şubeden yapmak ve yeniden işlemin "temel" olan düzeltmeyi (hatalı işlemden hemen önceki düzeltme) geçmek istiyorsunuz. Eğer taahhüt geçen good işaret eden bir dalı last-good-commit oluşturduk yüzden, eğer sen master aşağıdaki süre çalıştırmak isterim:

rebase kullanma
git rebase -i last-good-commit 
+3

Daha fazla argüman sağlamak onu daha da sezgisel hale getirebilir - 'git rebase -i son iyi-taahhütlü master' aynı şeyi yapar (üssü kontrol eder, sonra taban olarak son-iyi-taahhüdü kullanarak düzeltmeler). – Cascabel

29

İstediğinizi yapmanın en kolay yolu, düzenlemek ve düzenlemek istediğiniz dalı açmak (veya yeniden kontrol etmek). Kötü etkili şimdiki şubesinin geçmişinden kötü commiit kaldırarak, kötü en işlemek ebeveyn üzerine taahhüt beri

git rebase --onto <sha1-of-bad-commit>^ <sha1-of-bad-commit> 

Bu

herşeyi rebase. Tabii ki, meydana gelen herhangi bir çatışmayı çözmeniz gerekecek.

+7

Bir veri noktası üzerinde itmek başardı: bu benim depoyu imha . – Malvolio

+1

Çalışması için bir 'git push --force 'yapmalısınız. Ama * çok dikkatli ol. – redolent

2

, ben uzaktan değişiklikler yapmak mümkün değildi, ve her çekilişte rebase iptal edildi.

Ben sadece, ile (değil sonuncusu) işlemek kesin geri alınmasının başardı:

git revert <sha-of-bad-commit> 

Sonra da uzak

+0

Bir itme işleminden sonra yeniden üretiyorsanız, itme -f'yi kullanarak basmaya zorlamanız gerekir. Bunu, hedefteki diğer insanların değişikliklerini silerken olabildiğince dikkatli kullanın. – rjmunro

İlgili konular