Apakah mungkin untuk melihat siapa yang mengedit baris tertentu sebelum komit dilaporkan oleh git blame
, seperti riwayat komit untuk baris tertentu?
Misalnya, saya menjalankan yang berikut (pada uncrustify
proyek hebat ):
$ git blame -L10,+1 src/options.cpp
^fe25b6d (Ben Gardner 2009-10-17 13:13:55 -0500 10) #include "prototypes.h"
Bagaimana saya bisa mengetahui siapa yang mengedit baris itu sebelum melakukan fe25b6d
? Dan yang diedit sebelum itu berkomitmen?
-w
opsi. Ada juga-M
untuk kode yang dipindahkan / disalinJawaban:
Anda dapat menentukan revisi untuk kesalahan git untuk melihat kembali mulai dari (bukan default
HEAD
);fe25b6d^
adalah induk darife25b6d
.sumber
--
biasanya digunakan sebagai pemisah dalam argumen baris perintah - dalam kasus Git, biasanya digunakan untuk memisahkan hal-hal seperti melakukan hash dari daftar nama file.Anda dapat menggunakan git log -L untuk melihat evolusi berbagai baris.
Sebagai contoh :
berarti "melacak evolusi baris 15 hingga 23 dalam file bernama filename.txt".
sumber
Jawaban Amber benar tetapi saya merasa tidak jelas; Sintaksnya adalah:
Catatan:
--
digunakan untuk memisahkan tree-ish sha1 dari path file relatif. 1Sebagai contoh:
Penghargaan penuh untuk Amber karena mengetahui semua hal! :)
sumber
Anda mungkin ingin memeriksa:
Memberi Anda tampilan grafis yang bagus dari perubahan seperti "kesalahan git" tetapi dengan tautan yang dapat diklik per baris, untuk beralih ke komitmen sebelumnya. Arahkan kursor ke tautan untuk mendapatkan sembulan dengan detail komit. Bukan kredit saya ... ditemukan di sini:
http://zsoltfabok.com/blog/2012/02/git-blame-line-history/
git gui
adalah antarmuka Tcl / Tc grafis untuk git. Tanpa params lain itu memulai aplikasi grafis yang cukup sederhana tetapi berguna untuk melakukan file, bakhil atau bahkan baris tunggal dan perintah serupa lainnya seperti mengubah, mengembalikan, mendorong ... Ini adalah bagian dari paket git stock. Di windows itu termasuk dalam installer. Pada debian - saya tidak tahu tentang sistem * nix lainnya - harus diinstal secara terpisah:Dari dokumen:
https://git-scm.com/docs/git-gui
sumber
this
: tetapi bagaimana cara melihat versi sebelumnya dari garis dan kapan ditambahkan?Membangun dari jawaban sebelumnya, bash one-liner ini akan memberi Anda apa yang Anda cari. Ini menampilkan riwayat menyalahkan git untuk baris tertentu dari file tertentu, melalui 5 revisi terakhir:
Dalam output dari perintah ini, Anda mungkin melihat konten dari perubahan baris, atau nomor baris yang ditampilkan bahkan mungkin berubah, untuk komit tertentu.
Ini sering menunjukkan bahwa baris ditambahkan untuk pertama kalinya, setelah komit tertentu. Itu juga bisa menunjukkan baris telah dipindahkan dari bagian lain dari file.
sumber
Ada juga
recursive-blame
. Dapat diinstal dengansumber
Solusi yang sangat unik untuk masalah ini adalah menggunakan git log:
Seperti yang dijelaskan oleh Andre di sini
sumber
git config --global alias.changes 'log -p -M --follow --stat --'
dan kemudian saya cukup mengetikgit changes path/to/your/file
Jika Anda menggunakan JetBrains Idea IDE (dan turunannya) Anda dapat memilih beberapa baris, klik kanan untuk menu konteks, lalu Git -> Tampilkan riwayat untuk seleksi. Anda akan melihat daftar komit yang memengaruhi baris yang dipilih:
sumber
Pada Git 2.23 Anda dapat menggunakan git menyalahkan --ignore-rev
Untuk contoh yang diberikan dalam pertanyaan ini adalah:
(Namun ini pertanyaan jebakan karena fe25b6d adalah revisi pertama file!)
sumber
Berdasarkan jawaban Will Shepard, hasilnya akan mencakup garis duplikat untuk komit di mana tidak ada perubahan, sehingga Anda dapat memfilternya sebagai berikut (menggunakan jawaban ini )
Perhatikan bahwa saya menghapus argumen REVS dan ini kembali ke komit root. Ini karena pengamatan Max Nanasy di atas.
sumber
Membangun jawaban DavidN dan saya ingin mengikuti file berganti nama:
ref: dengan baik menampilkan sejarah ganti nama file di git log
sumber
Saya menggunakan skrip bash kecil ini untuk melihat sejarah menyalahkan.
Parameter pertama: file untuk dilihat
Parameter selanjutnya: Lewati untuk menyalahkan git
Anda mungkin menyediakan parameter menyalahkan seperti -L 70, + 10 tetapi lebih baik menggunakan pencarian regex git menyalahkan karena nomor baris biasanya "berubah" dari waktu ke waktu.
sumber
Membangun pada stangls 's jawaban , saya menempatkan script ini di PATH saya (bahkan pada Windows) sebagai git-bh:
Itu memungkinkan saya untuk mencari semua komitmen yang melibatkan kata:
Naskah:
sumber