Git'te yürütülen komutların geçmişi veya günlüğü


97

Windows altında Git'te kullandığım komutları takip etmemin bir yolu var mı? Depomda uyguladığım tüm komutları görmek istiyorum.

Komut geçmişine geri dönebilmek ve eğer meydana gelirse soruna neden olan komutu bulabilmek istiyorum.

İşlemlerin geçmişini görmek başka bir şey olabilir, ancak bir şube oluşturmak veya bir uzaktan kumanda eklemek gibi diğer eylemlerin geçmişini tutmak için bunlar izleniyor mu?


3
Bu biraz bir kenara, ancak içeri bakarsanız .git/logs, her dalın işaret ettiği işlemin geçmişini göreceksiniz.
Nayuki

1
@Nayuki pushing, yerel bir şubenin durumunu değiştirmediğinden, refloggörünüşe göre pushes depolamıyor , bu yüzden geçmişinizi .git/logs/refs/remotes/*/*görmenin tek yolu içeri bakmak push.
Kyle Strand

Yanıtlar:


-8

git, dizini etkileyen kaydetmelerdeki değişiklikleri gösterecektir git rm. Yürüttüğünüz tüm git komutlarının kaydını tutmaz.

Ancak, git komutları çok sayıda içinde endeksini etkileyen bazı tür yeni bir şube oluşturmak gibi, bu arada. Bu değişiklikler, görüntüleyebileceğiniz kaydetme geçmişinde görünecektir git log.

Ancak, git'in izleyemediği yıkıcı değişiklikler var, örneğin git reset.

Dolayısıyla, sorunuzu yanıtlamak için git, gitbir depoda yürüttüğünüz komutların mutlak geçmişini saklamaz . Bununla birlikte, yürütme geçmişi aracılığıyla hangi komutu çalıştırdığınızı değerlendirmek çoğu zaman mümkündür.


3
Aslında, aşağıda haklı olarak bahsedildiği gibi, öyle. "geçmiş" çalıştırılan komutların listesini gösterir (kurulumdan itibaren).
Umesh .A Bhat

2
Kabuk depolar tarih, ama git does not, doğru mu?
Alex

3
@UmeshABhat git history, örneğin belirli bir klonda hangi komutların çalıştırıldığını görmek için yararlı olabilir .
Kyle Strand

5
git reflogistediğin şey. Aşağıdaki yanıta bakın.
Chéyo

3
@ cp.engr: OP, git commit'leri değil, git komutlarının geçmişini sorar. Bu cevap, komutları git commits'ten çıkardığınızı gösteriyor ki bu çok zor bir iştir ve her zaman mümkün değildir. git reflogaslında komutları gösterir. Ayrıca, BTW, kabuk git komutlarını anlamanın yalnızca biraz daha doğrudan bir yoludur, ancak bir git deposuna birden çok kabuk dokunabilir. Git'e hangi komutların kullanıldığını sormak daha iyidir.
kombinasyoncu

186

Geçmişi git-reflog ile görebilirsiniz ( burada örnek ):

git reflog

18
@PauAI HEAD'inizin takip ettiği git reflog tüm konumları gösterirken, aslında tüm git komutlarını göstermeyecektir. Başı hareket ettirmeyen Git komutları (örneğin git branch -D my_precious_branch) orada görünmez.
Yonatan

@Yonatan, alamadın git reflog --allmı?
kombinasyoncu

2
@combinatorist (OP örneğin verdi) bir uzak ilave bağlantılar: git remote add foo bar. git reflog --allHEAD işaretçisini değiştirmediği için içinde görünmeyecektir .
Yonatan

git refloggit statusaso gibi komutları --allparametresiz veya parametresiz göstermiyor.
Lorenz

63

Komutlarınızın bir günlüğü, kabuk geçmişinizde bulunabilir.

history

Çalıştırılan komutların listesini görmek size göre değilse, listeyi bir dosyaya aktarın.

history > path/to/file

Dışa aktarılan dökümü grep ile borulayarak içinde yalnızca "git" olan komutları gösterecek şekilde kısıtlayabilirsiniz.

history | grep "git " > path/to/file

Geçmiş, bu şekilde biçimlendirilmiş satırlar içerebilir

518  git status -s
519  git commit -am "injects sriracha to all toppings, as required"

Numarayı kullanarak komutu bir ünlem işareti ile yeniden çalıştırabilirsiniz.

$ !518
git status -s

8

CentOS veya başka bir Linux çeşidi kullanıyorsanız , komut isteminde Ctrl+ yapın Rve yazın git.

Ctrl+ Tuşuna basmaya devam ederseniz, Rbu, ile başlayan komutlar için geçmişinizde ters arama yapacaktır.git


7

Tip historysizin terminalde. Teknik olarak saçma değil ama bence istediğin bu.


6

Windows PowerShell kullanıyorsanız, "git" yazabilir ve F8 tuşuna basabilirsiniz. Tüm git komutlarınız arasında geçiş yapmak için F8'e basmaya devam edin.

Veya cygwin kullanıyorsanız, aynı şeyi ^ R ile de yapabilirsiniz.


Normal Windows oturumunda, o oturumda girilen tüm komutların bir listesini veren küçük bir pencere açmak için F7 tuşunu kullanabilirsiniz
milso

0

Git bash "2.24.0.windows.2" sürümümde Windows kullanıcıları altındaki "home" klasörümde, o klasörde dosya uzantısı olmayan ".bash-history" adlı bir dosya olacağını öğrendim. Yalnızca bash'dan çıktıktan sonra oluşturulur.

İşte iş akışım:

  1. bash'den çıkmadan önce "geçmiş >> geçmiş.txt" yazın [ENTER]
  2. bash isteminden çık
  3. Çalıştır komut kutusunu açmak için Win + R tuşunu basılı tutun
  4. kabuk: profil girin
  5. metnimin eklendiğini onaylamak için "history.txt" dosyasını açın
  6. Yeni bir satırda zaman damgası girmek için [F5] tuşuna basın
  7. geçmiş metin dosyasını kaydet ve kapat
  8. ".Bash-history" dosyasını silin, böylece sonraki oturumda yeni bir geçmiş oluşturulur

Eğer gerçekten puan istiyorsan tüm bunları yapmak için bir toplu iş dosyası yapabilirsin ama bu benim için yeterince iyi. Umarım birine yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.