git ve

2016-04-11 16 views
0

yanlış şubeye itti V4.15.0 bir sürüm şube çalışıyordu, ben master şube gitti bazı küçük değişiklikler yaptıktan sonra, ben itti ve itti.git ve

Bu hatayı geri almanın en iyi yolu ne olurdu? İşlemi silmek zorunda kalmadan, bir işlemi V4.15.0'dan master'a taşıyabilmemin bir yolu var mı?

cevap

2

İlk önce V4.15.0 şubesini onarmamız gerekiyor. İki olası yöntem vardır.

git revert en kolay yoldur. Tek bir taahhüt kimliği verildiğinde, revert, tarihte yeni bir taahhüt olarak tersini yaratacaktır. Eğer geçmişi hatanı göstermek istemiyorsanız

git checkout V4.15.0 
git revert HEAD 

, sen geçmişini sıfırlamak için push --force kullanmak gerekecek. Kullanıcı olmayan şubelerdeki geçmişi yeniden yazmak için it is usually a bad practice'u not edin ve bazı depo yöneticisi bu nedenle üzerlerine --force izin vermez. Ancak sizin durumunuzda kabul edilebilir, iş akışı politikalarınızı doğrulayın.

# checkout the original V4.15.0 branch 
git checkout commit_before_mistake_V4.15.0 
# we are now detached from HEAD, so checkout a new branch 
git checkout -b fixed_branch 
# force push, this rewrites history 
git push fixed_branch:V4.15.0 --force 

Şimdi bu işlemi ana şubeye taşımak zorundayız.

Neyse ki, yukarıdaki iki yöntemden herhangi birini kullanarak hatalı işlemi silmeyecektir. Bu kimliği hatırlayın ve bu işlemi başka bir şubeye eklemek için git cherry-pick id'u kullanabilirsiniz.

git checkout master 
git cherry-pick id 
+1

Tarihin yeniden yazılmasının tehlikeli olabileceğinden ve cesaret kırıldığından bahsetmeye değer. [Bu SO gönderisi] konusuna bakın (http://stackoverflow.com/a/1491022/4494577) – jannis

+1

Evet, buna ilgili bir bildirim ekledim. Teşekkürler. – Martin

2

İki şey yapmanız gerekecek. Öncelikle, taahhütleri istemediğiniz daldaki işlemleri geri alın. İkincisi, doğru şubeye istediğiniz işleri seçin.

Mutlu kiraz toplama!