Pertanyaan ini membutuhkan "nomor baris", jika Anda tidak peduli dengan nomor baris dalam output, lihat pertanyaan dan jawaban ini .
Pada dasarnya, saya tidak ingin melihat konten yang diubah, hanya nama file dan nomor baris.
Pertanyaan ini membutuhkan "nomor baris", jika Anda tidak peduli dengan nomor baris dalam output, lihat pertanyaan dan jawaban ini .
Pada dasarnya, saya tidak ingin melihat konten yang diubah, hanya nama file dan nomor baris.
Jawaban:
Catatan: jika Anda hanya mencari nama-nama file berubah ( tanpa yang nomor baris untuk baris yang berubah), yang mudah, klik tautan ini untuk jawaban lain di sini .
Tidak ada opsi bawaan untuk ini (dan saya juga berpikir itu tidak begitu berguna), tetapi memang demikian mungkin untuk melakukan ini di git, dengan bantuan sebuah script "diff eksternal".
Ini yang jelek; itu terserah Anda untuk memperbaiki output seperti yang Anda inginkan.
Untuk perincian tentang "perbedaan eksternal" lihat deskripsi
GIT_EXTERNAL_DIFF
di halaman manual git (sekitar baris 700, cukup dekat sampai akhir).sumber
| grep -o '^[0-9]*'
memberi Anda hanya angka, dengan asumsi Anda tidak peduli dengan sisi kanan.--diff-filter=...
mana...
bagian itu adalah jenis perubahan yang ingin Anda lihat:M
untuk dimodifikasi,A
untuk ditambahkan,D
untuk dihapus, dan lain-lain sesuaigit diff
dokumentasi.Begitu mudah:
Majulah dan berbeda!
sumber
git diff --name-only master..HEAD
Nomor baris seperti dalam jumlah baris yang diubah atau nomor baris aktual yang mengandung perubahan? Jika Anda ingin jumlah baris yang diubah, gunakan
git diff --stat
. Ini memberi Anda tampilan seperti ini:Tidak ada opsi untuk mendapatkan nomor baris perubahan itu sendiri.
sumber
git diff master --compact-summary
Output adalah:
Inilah yang Anda butuhkan. Format yang sama seperti ketika Anda membuat komit atau menarik komit baru dari jarak jauh.
PS: Ada kabel sehingga tidak ada yang menjawab seperti ini.
sumber
1) Favorit saya:
Letakkan status file, misalnya:
2) Jika Anda ingin statistik, maka:
akan menampilkan sesuatu seperti:
3) Akhirnya, jika Anda benar-benar hanya menginginkan nama file:
Hanya akan menunjukkan:
sumber
Memperlihatkan nama file dan jumlah / jumlah baris yang berubah di setiap file antara sekarang dan komit yang ditentukan:
sumber
Saya tahu ini adalah pertanyaan lama tetapi pada Windows, ini memfilter keluaran git ke file dan mengubah nomor baris:
(git diff -p --stat) | findstr "@@ --git"
Untuk mengekstrak file dan baris yang diubah dari itu adalah pekerjaan yang sedikit lebih:
for /f "tokens=3,4* delims=-+ " %f in ('^(git diff -p --stat .^) ^| findstr ^"@@ --git^"') do @echo %f
sumber
Output terbersih, yaitu hanya nama file / jalur, dilengkapi dengan
HTH
sumber
Nyala
git version 2.17.1
, tidak ada bendera bawaan untuk mencapai tujuan ini.Berikut ini contoh perintah untuk memfilter nama file dan nomor baris dari diff terpadu:
Misalnya, perbedaan terpadu:
Akan menghasilkan:
Untuk mencocokkan output dari perintah dalam hasil pencocokan grep yang umum:
grep -Po '^diff --cc \K.*|^@@@( -[0-9]+,[0-9]+){2} \+\K[0-9]+(?=(,[0-9]+)? )
: Cocokkan nama file daridiff --cc <filename>
ATAU nomor baris Cocokkan dari@@@ <from-file-range> <from-file-range> <to-file-range>
ATAU Cocokkan teks yang tersisa setelah@@@
.sed -e '0~3{s/ @@@[ ]\?//}'
: Hapus@@@[ ]\?
dari setiap baris ke-3 untuk mendapatkan konteks 1 baris opsional sebelumnya++<<<<<<< HEAD
.sed '2~3 s/$/\n1/g'
: Menambahkan\n1
setiap 3 baris antara baris 2 dan 3 untuk nomor kolom.sed "N;N;N;s/\n/:/g"
: Gabung setiap 3 baris dengan a:
.sumber
Saya gunakan
grep
sebagai solusi naif.contoh keluaran:
Mungkin Anda bisa melihat keluaran berwarna. Ini membantu Anda untuk membaca output dengan mudah.
sumber