Git'te, memnun değilseniz bir yeniden tabanı nasıl geri alırsınız?
Git yeniden taban için kuru çalıştırmaya sahip değil. Yeniden ödeme yaptıysam ve henüz itmediysem, sanki hiç olmamış gibi daha önce nasıl geri dönebilirim?
Git'te, memnun değilseniz bir yeniden tabanı nasıl geri alırsınız?
Git yeniden taban için kuru çalıştırmaya sahip değil. Yeniden ödeme yaptıysam ve henüz itmediysem, sanki hiç olmamış gibi daha önce nasıl geri dönebilirim?
Yanıtlar:
Yeniden tabanlama başlamadan önceki ilk eylemi bulmak için reflog'u kullanabilir ve ardından sıfırlayabilirsiniz - tam tersine. Örneğin
$ git reflog
b710729 HEAD@{0}: rebase: some commit
5ad7c1c HEAD@{1}: rebase: another commit
deafcbf HEAD@{2}: checkout: moving from master to my-branch
...
$ git reset HEAD@{2} --hard
Şimdi geri ödeme başlamadan önce geri dönmelisiniz.
Sıfırlamak için doğru yeri bulmak için, sadece girişi üstüne yakın almak değil "rebase" ile başlar.
Rebase ise tek şey sen dala yapmış, değiştirir sen / hayır unpushed hareketin var yani - o zaman sadece yerel şube silebilir git branch -Dve yeniden göz atın:
$ git checkout my-branch
$ git rebase master
// not happy with result
$ git checkout master
$ git branch -D my-branch
$ git checkout my-branch
Ya da aynı etkiyle, başlangıç dalına sıfırlayabilirsiniz:
$ git reset --hard origin/my-branch
Bunu, başka kaldırılmamış taahhütleriniz varken yaparsanız, onları kaybedersiniz. Bu durumda, commit (leri) yaptığınız reflog girişine geri dönmek için yukarıdaki reflog yaklaşımını kullanın.
ORIG_HEADyeniden temel, yeniden oluşturulan dalın orijinal hash değerine ayarlanır . Yani oldukça numarasını 2 bulmaktan daha HEAD@{2}, sadece kullanabilirsiniz ORIG_HEAD... ama sadece eğer ORIG_HEADhala bozulmamış olduğunu. Bir grup Git komutu onu ayarlar (çeşitli koşullar altında yeniden tabanla, am, sıfırla ve birleştir).
Rebase, eski durumun bir yedeğini olarak tutar ORIG_HEAD.
Böylece son yeniden ödemeyi şu şekilde geri döndürebilirsiniz:
git reset --hard ORIG_HEAD