Pertanyaan Bagaimana cara git log menampilkan namafile seperti svn log -v


Log SVN memiliki mode "-v" yang mengeluarkan nama file dari file yang diubah di setiap commit, seperti:

jes5199 $ svn log -v
-------------------------------------------------- ----------------------
r1 | jes5199 | 2007-01-03 14:39:41 -0800 (Rab, 03 Jan 2007) | 1 baris
Jalur yang diubah:
   A / PENULIS
   A / COPYING
   A / ChangeLog
   A / EVOLUTION
   A / INSTALL
   A / MacOSX

Apakah ada cara cepat untuk mendapatkan daftar file yang diubah di setiap commit di git?


768
2017-08-04 21:46


asal


Jawaban:


Untuk nama path lengkap dari file yang diubah:

git log --name-only

Untuk nama path lengkap dan status file yang diubah:

git log --name-status

Untuk nama path yang disingkat dan diffstat dari file yang diubah:

git log --stat

Ada banyak opsi lainnya, periksa dokumennya.


1215
2017-08-04 21:48



CATATAN:  git whatchanged tidak lagi digunakan git log sebagai gantinya


134
2017-08-04 21:48



git show juga merupakan perintah yang bagus.

Ini seperti svn diff, tetapi Anda dapat mengirimkannya panduan commit dan melihat diff itu.


46
2018-03-22 00:02



Jika Anda ingin mendapatkan nama file saja tanpa sisa pesan commit yang dapat Anda gunakan:

git log --name-only --pretty=format: <branch name>

Ini kemudian dapat diperluas untuk menggunakan berbagai opsi yang mengandung nama file:

git log --name-status --pretty=format: <branch name>

git log --stat --pretty=format: <branch name>

Satu hal yang perlu diperhatikan ketika menggunakan metode ini adalah bahwa ada beberapa baris kosong dalam output yang harus diabaikan. Penggunaan ini dapat berguna jika Anda ingin melihat file yang telah diubah pada cabang lokal, tetapi belum didorong ke cabang jarak jauh dan tidak ada jaminan yang terbaru dari remote telah ditarik masuk. Misalnya :

git log --name-only --pretty=format: my_local_branch --not origin/master

Akan menampilkan semua file yang telah diubah pada cabang lokal, tetapi belum digabungkan ke cabang master pada remote.


37
2017-07-11 02:06



Saya menggunakan ini setiap hari untuk menampilkan riwayat dengan file yang berubah:

git log --stat --pretty=short --graph

Untuk membuatnya tetap singkat, tambahkan alias di .gitconfig dengan melakukan:

git config --global alias.ls 'log --stat --pretty=short --graph'

29
2018-05-25 00:24



Saya menggunakan ini:

git log --name-status <branch>..<branch> | grep -E '^[A-Z]\b' | sort | uniq

yang mengeluarkan daftar file saja dan statusnya (ditambahkan, dimodifikasi, dihapus):

A   sites/api/branding/__init__.py
M   sites/api/branding/wtv/mod.py
...

12
2017-09-30 13:18



git diff --stat HEAD^! menunjukkan perubahan file dan penambahan / penghitungan baris yang dihapus untuk commit terakhir (HEAD).

Tampaknya bagi saya bahwa tidak ada satu perintah untuk mendapatkan keluaran ringkas yang hanya terdiri dari nama file dan menambahkan dan menghapus jumlah baris untuk beberapa commit sekaligus, jadi saya membuat skrip bash saya sendiri untuk itu:

#!/bin/bash
for ((i=0; i<=$1; i++))
do
    sha1=`git log -1 --skip=$i --pretty=format:%H`
    echo "HEAD~$i $sha1"
    git diff --stat HEAD~$(($i+1)) HEAD~$i 
done

Untuk dipanggil misalnya. ./changed_files 99 untuk mendapatkan perubahan dalam bentuk ringkas dari HEAD untuk HEAD~99. Dapat dialirkan misalnya. untuk less.


7
2017-11-25 01:08