Yanıtlar:
git checkout <sha1>
Belirli bir taahhüdü kontrol etmek için kullanın .
git log
şimdi sadece ilk taahhüdü gösteriyor, bir sonraki taahhüdün sha1'ini bulabilir miyim?
git log --oneline
Çıktıyı referans için bir metin dosyasına çalıştırmalı ve yapıştırmalısınız (sağladığı kısaltılmış sha1 toplamlarının benzersiz olması garanti edilmektedir). Başka bir seçenek, geçmişiniz doğrusal ise, ilk işlemden sonuna kadar kaç işlem olduğunu master
ve git checkout master~543
(543 işlem varsa), o zaman git checkout master~542
vb
Belirli bir sürüme gitmek için aşağıdaki komutları çalıştırın. HASH-CODE alabilirsinizgit log --oneline -n 10
git reset --hard HASH-CODE
Not - git pull --rebase
Atılan tüm taahhütleri geri getirmek isterseniz, belirli bir sürüme / yüklemeye sıfırladıktan sonra çalıştırabilirsiniz .
reset
sadece o da hareket edecektir grafiğinde belirli bir noktaya ödeme yok senin şu anda şube teslim
reset
, beklemedeki tüm değişiklikleriniz de silinir.
git pull --rebase
sadece depo için bir uzaktan kumandanız varsa ve güncelse çalışır.
Gibi araçlarla proje geçmişinin grafiksel bir görünümünü elde edebilirsiniz gitk
. Sadece koş:
gitk --all
Belirli bir şubeye göz atmak istiyorsanız:
git checkout <branch name>
Belirli bir taahhüt için, şube adı yerine SHA1 karmasını kullanın. (Bkz Treeishes içinde Git Topluluk Kitabı iyi bir okuma olduğunu, ağaç gezinmek için diğer seçenekleri görmek için.)
git log
ayrıntılı veya özet geçmişini de görüntülemek için bir dizi seçeneğe sahiptir.
Taşınmanın kolay bir yolunu bilmiyorum Bir taahhüt tarihinde ilerlemenin . Doğrusal bir geçmişe sahip projeler muhtemelen o kadar yaygın değildir. SVN veya CVS'de yaptığınız gibi bir "revizyon" fikri Git'te bu kadar iyi eşleşmiyor.
Bir taahhüdün SHA1 anahtarını kullanarak aşağıdakileri yapabilirsiniz:
İlk olarak, belirli bir dosya için istediğiniz taahhüdü bulun:
git log -n <# commits> <file-name>
Bu, sizin <# commits>
belirli bir dosya için taahhütlerin bir listesini oluşturur.
İPUCU: emin aradığınızı taahhüt değilse, iyi bir yol aşağıdaki komutu kullandığını öğrenmek için: git diff <commit-SHA1>..HEAD <file-name>
. Bu komut, bir kesinliğin geçerli sürümü ile belirli bir dosyaya yönelik bir kesinliğin önceki sürümü arasındaki farkı gösterir.
NOT: Bir taahhüdün SHA1 anahtarı git log -n
'listesinde listelenir:
işlemek
<SHA1 id>
İkincisi, istediğiniz sürüme göz atın:
İstediğiniz taahhüt / sürümü bulduysanız, şu komutu kullanın: git checkout <desired-SHA1> <file-name>
Bu, belirttiğiniz dosyanın sürümünü hazırlama alanına yerleştirir. Hazırlama alanından çıkarmak için şu komutu kullanmanız yeterlidir:reset HEAD <file-name>
Uzak deponun işaret edildiği yere geri dönmek için şu komutu kullanmanız yeterlidir: git checkout HEAD <file-name>
Bir ana dalımızın olduğu bir durumdaydım ve sonra 17.0 adında başka bir dal vardı ve bu 17.0 içinde "XYZ" diyen bir taahhüt karması vardı . Ve XYZ revizyonuna kadar müşteriye bir yapı verilir. Şimdi bir hatayla karşılaştık ve bunun o müşteri için çözülmesi gerekiyor. Bu yüzden, o "xyz" karmasına kadar bu müşteri için ayrı bir şube oluşturmamız gerekiyor. İşte böyle yaptım.
İlk önce yerel makinemde o müşteri adına sahip bir klasör oluşturdum. Bu klasör oluşturulduktan sonra müşteri adı "AAA" deyin, bu klasördeki komutu takip ederek sorun:
Bunun bir yolu, yamalara yapılan tüm taahhütleri oluşturmak olacaktır. İlk taahhüdü kontrol edin ve yamaları okuduktan sonra sırayla uygulayın.
kullan git format-patch <initial revision>
ve sonragit checkout <initial revision>
. yamalar olan dört basamaktan başlayarak yönetmeninizde bir yığın dosya almalısınız.
revizyonunuzu okumayı bitirdiğinizde, git apply <filename>
hangisi gibi görünmeli
git apply 0001-*
ve sayılmalıdır.
Ama neden sadece yamaları okumak istemeyeceğinizi merak ediyorum? Lütfen bunu yorumlarınıza gönderin çünkü merak ediyorum.
git kılavuzu da bana bunu verir:
git show next~10:Documentation/README
Documentation / README dosyasının içeriğini, bir sonraki şubenin 10. son işleminde geçerli oldukları gibi gösterir.
Ayrıca, git blame filename
her satırın bir kesin karma + yazarla ilişkilendirildiği bir liste veren bir göz atabilirsiniz .
Belirli bir taahhütlü koda ulaşmak için söz konusu taahhüdün karma koduna ihtiyacınız vardır . Bu karma kodu iki şekilde alabilirsiniz:
git log
ve o daldaki son taahhütlerinizi kontrol edin. Taahhütünüzün karma kodunu ve kodunuzu işlerken bıraktığınız mesajı gösterecektir. Sadece kopyala ve sonra yapgit checkout commit_hash_code
Bu koda geçtikten sonra, üzerinde çalışmak ve değişiklik yapmak istiyorsanız, başka bir dal yapmanız gerekir git checkout -b <new-branch-name>
, aksi takdirde değişiklikler korunmaz.
git log -n1
. Ancakgit checkout
başarısız olmadıkça , bu bir çaba kaybıdır.