Git deposunun bir alt dizini için git günlüğü geçmişi nasıl gösterilir?


228

Diyelim ki şöyle bir git repo var.

foo/
  .git/
  A/
   ... big tree here
  B/
   ... big tree here

Git günlüğünün yalnızca belirli bir dizin için günlük iletilerini göstermesini istemenin bir yolu var mı? Örneğin, dokunulan dosyaları yalnızca foo / A'da hangi işlemleri yürüttüğünü görmek istiyorum?

Yanıtlar:


243

Dizinden şunu foo/kullanın:

  git log -- A

İhtiyacınız '-' ayırmak için <path>..gelen <since>..<until>refspecs.

# Show changes for src/nvfs
$ git log --oneline -- src/nvfs
d6f6b3b Changes for Mac OS X
803fcc3 Initial Commit

# Show all changes (one additional commit besides in src/nvfs).
$ git log --oneline
d6f6b3b Changes for Mac OS X
96cbb79 gitignore
803fcc3 Initial Commit

1
Bu arada, "git log - A B" yapmadan önce "foo" katlayıcıda kalmalısınız
Sergey Leyko

22
İnsanların yağsız okuma için, bu gösterileri değişiklikler A ve B , sadece AOP istendiği gibi
aidan

1
@GoZoner, belirli bir klasör adının değiştirildiği tüm taahhütleri bulmanın bir yolu var mı? klasör taşınmış olabilir, bu yüzden klasör nasıl ve nerede taşındı avlamak zorunda kalmazsınız tercih ederim ..
alpha_989

3
^^ AOP'nin istediği gibi yalnızca değişiklik gösterecek şekilde güncellendi .
GoZoner

Dizin geçerli başlıkta silinmişse ne olur?
Aaron Franke

34

grafiksel olarak görmek isterseniz

gitk -- foo/A

resim açıklamasını buraya girin


26

git logİlgili klasörlerin yol adlarıyla kullanabilirsiniz :

git log A B

Günlükte yalnızca Ave öğesinde yapılan taahhütler gösterilir B. Genellikle --statişleri biraz daha güzel yapmak için atarım , bu da hızlı taahhüt incelemelerine yardımcı olur.


26

Giriş

git log .

belirli bir dizinden, o dizinde de taahhüt verir.


4
Benim için çalışmadı .. Belirli bir dizine inip git günlüğünü verdikten sonra. Bana bütün taahhütleri kökünden verdi.
AKS

1
Benim için çalışıyor. Git bash
buckley

2

Klasörün taşındığı bir klasördeki değişiklikleri izlemek için aşağıdakileri kullanmaya başladım:

git rev-list --all --pretty=oneline -- "*/foo/subfoo/*"

Bu, aynı ada sahip diğer klasörleri yakalayacağı için mükemmel değil, ancak benzersizse, işe yarıyor gibi görünüyor.


0

Diğer cevaplar sadece değiştirilen dosyaları gösterir.

git log -p DIRbelirli bir alt dizindeki tüm değiştirilmiş dosyaların tam farkına ihtiyacınız varsa çok kullanışlıdır .

Örnek: Belirli bir sürüm aralığındaki tüm ayrıntılı değişiklikleri göster

git log -p 8a5fb..HEAD -- A B

commit 62ad8c5d
Author: Scott Tiger
Date:   Mon Nov 27 14:25:29 2017 +0100

    My comment

...
@@ -216,6 +216,10 @@ public class MyClass {

+  Added
-  Deleted

1
Bu cevabın soru ile nasıl ilişkili olduğunu anlamıyorum
Florian Leitgeb
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.