2013-01-24 15 views
18

master diyelim Bir özelliği devre dışı bırakılmış. Bu özellik üzerinde şube feature üzerinde çalışıyorum, bu nedenle bu özelliği etkinleştiren özel bir işlem var $ var. Şimdi feature'da yaptığım değişiklikleri master içine birleştirmek istiyorum, ancak etkinleştirme işlemini sürdürmek istiyorum.Git: "Üstte" bir işlem gerçekleştirme

new feature: A--B--C--D--$ 

Bunu nasıl yapmayı gitmek: Yani Yani ben özelliğin üstünde taahhüt $ hareket ettirerek, bunu yapmak istiyorum diyelim

main: A--B--X--Y 
feature: A--B--$--C--D 

gibi?

cevap

20

git rebase -i B ve sonra editörünüzde görünen listenin sonuna $ öğesini taşıyın. Açılan dosyadaki ilk satır olarak başlayacaktır. Ayrıca bu satırı tamamen silebilirsiniz, ki bu da şubenizin geçmişini bırakacak.

+0

Harika teşekkürler! Artık rebase kullanmalıyım diye çok açık, bazı sebeplerden önce onu daha önce vişne ile çözmeye çalıştım. –

+0

@AdrianPanasiuk, kiraz alımını da kullanabilirsiniz, ama muhtemelen çok daha fazla çaba gerektirecektir. –

5

feature numaralı sözleşmeyi aynı siparişte tutmak istiyorsanız, yeni bir şube oluşturup aşağıdakileri gerçekleştirmelisiniz. listede

git checkout master 
git rebase feature <or the other branch name> 

dibine $ taahhüt Aksi sadece feature

git rebase -i <sha for commit B> 

taşı üzerinde bunu Söz bana belli değildi ama hiç $ istemiyorsa, git rebase -i'dan sonra onu silmek yerine yeni bir dalda bunu yapmak isteyip istemediğinizi unutmayın. Tarihi değiştirirken. Bu, feature dalının, geçmişin yeniden yazılması kötü olduğu için uzaktan kumandaya itilmemiş olduğunu varsayar.