İ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
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
Evet, buna ilgili bir bildirim ekledim. Teşekkürler. – Martin