2012-02-17 14 views
17

Şube olduğumu düşündüğümde düzinelerce taahhüt yaptım, sonra başka bir şubeye baktım.Git/ayrılmış HEAD, işe geri dönelim mi?

İlk şubeme geri dönmek isteyen, güncellenmiş kodumu bulamadım. Konsolide tarihime baktıktan sonra, anladım ki bağımsız bir dalda çalıştım ...

Yaptığım işi bağımsız bir dalda yapmak bir şekilde mümkün mü?

cevap

23

Evet. Reflog'u kullanabilirsiniz. git log -g HEAD'u deneyin. Bu size HEAD için reflog, yani HEAD'un işaret ettiği her bir işlemi gösterir ve bu nedenle bu işleme değişme nedenini gösterir. Şubeyi kontrol eden komutunuzu bulabilir ve önceki işlemin ne olduğunu görebilirsiniz.

Ayrıca, yeniden yazım indekslemek için başka sözdizimini de kullanabilirsiniz. git checkout branch'u daha önce gerçekleştirdiyseniz, [email protected]{1}, daha önce teslim alınmış olan taahhütten bahsedecektir (böylece git checkout [email protected]{1}'a geri dönebilirsiniz). Ya da 10 dakika önce HEAD'un doğru olanı işaret ettiğini biliyorsanız, git checkout [email protected]{10.minutes.ago}'u kullanabilirsiniz.

+2

Teşekkürler, sadece 4 saat çalışmayı kaydettiniz .... – apneadiving

+0

@apneadiving: Gitmeyi taahhüt ettiğiniz bir şey daha sonra alınabilir. Gerçekleşmemiş bir taahhüt nesnesi aslında toplanan çöpün toplanmasından 1,5 ay geçmesi gerekir. (1 aydan önce, reflogdan 1 ay önce ve silinmeden 2 hafta önce). En kötü durum bu nesneleri 'git fsck --lost-found' ile bulabilirsin. –

+0

Tamam, bu detaylar için tekrar teşekkürler. – apneadiving

9

Relax, her şey hala

hemen önce işaret neyi taahhüt HEAD gerektiğini söyleyecektir

git reflog 

ve git çağrı var :) edilmektedir. müstakil bir kafa ile size kaydedilmesini ucunun SHA1 anlatan

checkout: moving from c70e36e25ac2dbedde6cb376719381fe0ab53f19 to master 

gibi bir çizgi olacaktır. Şimdi kaydedilmesini gitmek gerekiyordu şube üstünde bu kolu rebase

git branch saved-commits c70e36e25ac2dbedde6cb376719381fe0ab53f19 

kullanarak o ucuna yeni bir şube işaret oluşturun.

+0

Tamamlayıcı cevaplar için çok değerli, çok değerli. – apneadiving