Bagaimana cara menunjukkan riwayat log git untuk sub direktori dari repo git?

228

Katakanlah saya punya repo git yang terlihat seperti ini.

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

Apakah ada cara untuk meminta log git untuk hanya menampilkan pesan log untuk direktori tertentu. Misalnya saya ingin melihat apa yang melakukan file yang tersentuh hanya di foo / A?

am
sumber

Jawaban:

242

Dari direktori foo/, gunakan

  git log -- A

Anda memerlukan '-' untuk memisahkan <path>..dari <since>..<until>refspec.

# 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
GoZoner
sumber
1
Ngomong-ngomong, Anda harus tetap berada di folder "foo" sebelum melakukan "git log - A B"
Sergey Leyko
22
Bagi orang yang membaca skim, ini menunjukkan perubahan A dan B , tidak hanya Aseperti yang diminta OP
aidan
1
@GoZoner, apakah ada cara untuk menemukan semua komit tempat nama folder tertentu diubah? folder bisa bergerak, jadi saya lebih suka tidak harus memburu bagaimana dan di mana folder dipindahkan ..
alpha_989
3
^^ Diperbarui untuk hanya menampilkan perubahan A, seperti yang diminta OP.
GoZoner
Bagaimana jika direktori itu dihapus di kepala saat ini?
Aaron Franke
34

jika Anda ingin melihatnya secara grafis, Anda dapat menggunakannya

gitk -- foo/A

masukkan deskripsi gambar di sini

Reza
sumber
26

Anda dapat menggunakan git logdengan nama path folder masing-masing:

git log A B

Log hanya akan menampilkan komit yang dibuat di Adan B. Saya biasanya melempar --statuntuk membuat hal-hal sedikit lebih cantik, yang membantu untuk ulasan komit cepat.

Nick Tomlin
sumber
26

Memasukkan

git log .

dari direktori tertentu, ia juga memberikan commit di direktori itu.

Nikhil Agarwal
sumber
4
Tidak bekerja untuk saya..Setelah mendarat di direktori tertentu dan memberikan git log. memberi saya semua komitmen dari root.
AKS
1
Bekerja untukku. Menggunakan git bash
buckley
2

Untuk melacak perubahan pada folder tempat folder dipindahkan, saya mulai menggunakan:

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

Ini tidak sempurna karena akan mengambil folder lain dengan nama yang sama, tetapi jika itu unik, maka tampaknya berfungsi.

Mafu Josh
sumber
0

Jawaban lain hanya menunjukkan file yang diubah.

git log -p DIRsangat berguna, jika Anda memerlukan perbedaan penuh dari semua file yang diubah dalam subdirektori tertentu.

Contoh: Tampilkan semua perubahan terperinci dalam rentang versi tertentu

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
Matthias M
sumber
1
Saya tidak mengerti bagaimana jawaban ini berhubungan dengan pertanyaan
Florian Leitgeb