Bisakah saya meminta git untuk memberi tahu saya semua file yang telah dimodifikasi oleh satu pengguna?


148

Saya ingin git memberi saya daftar semua file yang dimodifikasi oleh satu pengguna, di semua komit.

Kasus penggunaan khusus saya adalah bahwa saya telah terlibat dalam i18n dari proyek ruby ​​on rails, dan kami ingin tahu file apa yang telah dilakukan dan file apa yang masih harus dilakukan. Pengguna yang dipermasalahkan hanya melakukan pekerjaan pada i18n, bukan pada basis kode lainnya. Jadi informasinya harus dalam git, tapi saya tidak yakin bagaimana cara mengeluarkannya.

Jawaban:


128

Ini bukan satu-satunya cara, tetapi berhasil:

git log --pretty="%H" --author="authorname" |
    while read commit_hash
    do
        git show --oneline --name-only $commit_hash | tail -n+2
    done | sort | uniq

Atau, sebagai satu baris:

git log --pretty="%H" --author="authorname" | while read commit_hash; do git show --oneline --name-only $commit_hash | tail -n+2; done | sort | uniq

184

Ini akan memberi Anda daftar file sederhana, tidak ada yang lain:

git log --no-merges --author="Pattern" --name-only --pretty=format:"" | sort -u

Ganti --author untuk --committer seperlunya.


1
--name-onlytampaknya tidak menghasilkan apa-apa selain nama file. Mengingat fakta itu, apa saja pilihan --statdan --pretty=format:""pencapaiannya? Bisakah Anda meninggalkan mereka?
Jonah

1
@Jonah --pretty = format: "" diperlukan. Saya mengedit jawabannya.
Ian Kelling

2
berfungsi dengan baik, meskipun ada satu kesalahan kecil: ia menghasilkan tautan kosong pada awal output, yang berarti bahwa mem-pipkan hasil melalui 'wc -l' untuk mendapatkan jumlah file dimatikan oleh 1.
joachim

bagaimana saya bisa mengecualikan file yang dihapus?
Tim Boland

8

Coba git log --stat --committer=<user>. Cukup masukkan nama pengguna pada --committer=opsi (atau gunakan yang --author=sesuai).

Ini akan memuntahkan semua file per komit, sehingga kemungkinan akan ada duplikasi.


0
git log --pretty= --author=@abcd.com --name-only | sort -u | wc -l

Memperlihatkan semua file yang dimodifikasi oleh perusahaan di git repo.

git log --pretty= --author=user@abcd.com --name-only | sort -u | wc -l

Memperlihatkan semua file yang dimodifikasi dengan nama pengguna 'pengguna' di git repo.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.