dan jika Anda ingin mengetahui file yang dimodifikasi untuk komit tertentu lakukan:git diff --name-only <SHA> <SHA>^
thebugfinder
3
Menggunakan --name-statusflag sebagai ganti --name-onlyberguna untuk mendapatkan daftar file dan melihat status modifikasinya, seperti Ditambahkan atau Dimodifikasi.
Thane Plummer
@Amber harus menyebutkan catatan @Thane Plummer yang --name-statusmenunjukkan apa yang terjadi pada mereka
Zoltán Süle
64
Untuk menemukan nama semua file yang diubah sejak komit terakhir Anda:
git diff --name-only
Atau (untuk informasi lebih lanjut, termasuk file yang tidak dilacak):
Untuk membuat daftar semua file yang tidak dilacak (yang terdaftar oleh git status, jadi tidak termasuk file yang diabaikan):
git ls-files --other --exclude-standard
Jika Anda menggunakan ini dalam shell script, dan Anda ingin pemrograman memeriksa apakah perintah ini kembali apa-apa, Anda akan tertarik git diff's --exit-codepilihan.
Ketika saya telah menambahkan / memodifikasi / menghapus banyak file (sejak komit terakhir), saya ingin melihat modifikasi tersebut dalam urutan kronologis.
Untuk itu saya gunakan:
Untuk membuat daftar semua file yang tidak dipentaskan:
Mengapa tidak menggunakan xargsdan satu panggilan stat? Satu git ls-files -z --other --modified --exclude-standard | xargs -0 stat -c '%y %n' -- | sort
kalimat
@ruvim Terima kasih. Saran yang sangat bagus. Saya telah mengedit jawaban untuk memasukkan komentar Anda, agar lebih terlihat.
VonC
4
Saya perlu daftar file yang telah mengubah konten antara dua komit (hanya ditambahkan atau diubah), jadi saya menggunakan:
difilter = [(A | C | D | M | R | T | U | X | B)… [*]]
Pilih hanya file yang ditambahkan (A), Disalin (C), Dihapus (D), Dimodifikasi (M), Diubah nama (R), memiliki jenisnya (yaitu file biasa, symlink, submodule, ...) diubah (T), adalah Unmerged (U), Unknown (X), atau sudah dipasangkan Broken (B). Kombinasi karakter filter apa pun (termasuk tidak ada) dapat digunakan. Ketika * (Semua-atau-tidak ada) ditambahkan ke kombinasi, semua jalur dipilih jika ada file yang cocok dengan kriteria lain dalam perbandingan; jika tidak ada file yang cocok dengan kriteria lain, tidak ada yang dipilih.
Juga, huruf besar ini dapat diturunkan untuk dikecualikan. Misalnya --diff-filter = iklan mengecualikan jalur yang ditambahkan dan dihapus.
Jika Anda ingin membuat daftar status juga (mis. A / M), ubah --name-onlyke --name-status.
Daftar unstaged yang dimodifikasi dapat diperoleh dengan menggunakan git statusdan grepperintah seperti di bawah ini. Sesuatu seperti git status -s | grep M:
root@user-ubuntu:~/project-repo-directory# git status -s | grep '^ M'
M src/.../file1.js
M src/.../file2.js
M src/.../file3.js
....
Perhatikan bahwa ini hanya dapat digunakan untuk perubahan yang tidak dipentaskan, jadi ini tidak berguna untuk 'file yang berubah di antara dua komitmen Git'
John Vandenberg
2
Dengan git showAnda bisa mendapatkan hasil yang serupa. Untuk melihat komit (seperti yang terlihat pada git logtampilan) dengan daftar file yang disertakan, gunakan:
git show --name-only [commit-id_A]^..[commit-id_B]
Di mana [commit-id_A]komit awal dan [commit-id_B]komit terakhir dari yang ingin Anda tunjukkan.
Perhatian khusus dengan ^simbol. Jika Anda tidak mengatakannya, informasi commit-id_A tidak akan digunakan.
Jika Anda ingin memeriksa file yang diubah, Anda harus mengurus banyak hal kecil seperti mana yang terbaik untuk digunakan, seperti jika Anda ingin memeriksa file mana yang diubah, ketik saja.
git status - itu akan menampilkan file dengan perubahan
maka jika Anda ingin tahu perubahan apa yang harus dilakukan dapat diperiksa dengan cara,
git diff - akan menampilkan semua perubahan di semua file
itu baik hanya ketika hanya satu file yang dimodifikasi
dan jika Anda ingin memeriksa file tertentu maka gunakan
Jawaban:
Untuk file yang diubah antara SHA yang diberikan dan komit Anda saat ini:
atau jika Anda ingin menyertakan file yang diubah-tetapi-belum-berkomitmen:
Secara lebih umum, sintaks berikut akan selalu memberi tahu Anda file mana yang diubah antara dua komit (ditentukan oleh SHA atau nama lain):
sumber
git diff --name-only <SHA> <SHA>^
--name-status
flag sebagai ganti--name-only
berguna untuk mendapatkan daftar file dan melihat status modifikasinya, seperti Ditambahkan atau Dimodifikasi.--name-status
menunjukkan apa yang terjadi pada merekaUntuk menemukan nama semua file yang diubah sejak komit terakhir Anda:
Atau (untuk informasi lebih lanjut, termasuk file yang tidak dilacak):
sumber
Untuk membuat daftar semua file yang diubah tidak dilacak yang dilacak:
Untuk daftar semua dipentaskan file berubah dilacak:
Untuk membuat daftar semua file berubahan yang dipentaskan dan tidak dipentaskan :
Untuk membuat daftar semua file yang tidak dilacak (yang terdaftar oleh
git status
, jadi tidak termasuk file yang diabaikan):Jika Anda menggunakan ini dalam shell script, dan Anda ingin pemrograman memeriksa apakah perintah ini kembali apa-apa, Anda akan tertarik
git diff
's--exit-code
pilihan.sumber
Ketika saya telah menambahkan / memodifikasi / menghapus banyak file (sejak komit terakhir), saya ingin melihat modifikasi tersebut dalam urutan kronologis.
Untuk itu saya gunakan:
Untuk membuat daftar semua file yang tidak dipentaskan:
Untuk mendapatkan tanggal modifikasi terakhir untuk setiap file:
Meskipun ruvim menyarankan dalam komentar :
Untuk mengurutkannya dari yang terlama ke yang terbaru:
Sebuah alias memudahkan penggunaan:
Atau (lebih pendek dan lebih efisien, berkat ruvim )
Sebagai contoh:
Saya sekarang dapat meninjau modifikasi saya, dari yang terlama hingga yang terbaru.
sumber
xargs
dan satu panggilanstat
? Satugit ls-files -z --other --modified --exclude-standard | xargs -0 stat -c '%y %n' -- | sort
Saya perlu daftar file yang telah mengubah konten antara dua komit (hanya ditambahkan atau diubah), jadi saya menggunakan:
Opsi-opsi filter yang berbeda dari dokumentasi git diff :
Jika Anda ingin membuat daftar status juga (mis. A / M), ubah
--name-only
ke--name-status
.sumber
Daftar unstaged yang dimodifikasi dapat diperoleh dengan menggunakan
git status
dangrep
perintah seperti di bawah ini. Sesuatu sepertigit status -s | grep M
:sumber
Dengan
git show
Anda bisa mendapatkan hasil yang serupa. Untuk melihat komit (seperti yang terlihat padagit log
tampilan) dengan daftar file yang disertakan, gunakan:Di mana
[commit-id_A]
komit awal dan[commit-id_B]
komit terakhir dari yang ingin Anda tunjukkan.Perhatian khusus dengan
^
simbol. Jika Anda tidak mengatakannya, informasi commit-id_A tidak akan digunakan.sumber
Jika Anda ingin memeriksa file yang diubah, Anda harus mengurus banyak hal kecil seperti mana yang terbaik untuk digunakan, seperti jika Anda ingin memeriksa file mana yang diubah, ketik saja.
git status - itu akan menampilkan file dengan perubahan
maka jika Anda ingin tahu perubahan apa yang harus dilakukan dapat diperiksa dengan cara,
git diff - akan menampilkan semua perubahan di semua file
itu baik hanya ketika hanya satu file yang dimodifikasi
dan jika Anda ingin memeriksa file tertentu maka gunakan
git diff
sumber