Jadi jika saya memiliki file bernama foo.rb dan itu memberi saya kesalahan untuk metode yang disebut bar , jadi saya ingin mencari sejarah foo.rb untuk string bar
untuk melihat apakah pernah didefinisikan di masa lalu.
Saya menemukan ini Cari semua riwayat Git untuk sebuah string?
Tapi ini mencari semua file. Saya hanya ingin mencari dalam satu file.
-- filename
ke banyak perintah git jika Anda ingin membatasi ke satu file.Jawaban:
Untuk tujuan ini, Anda dapat menggunakan opsi -S untuk mendapatkan log:
sumber
git log -G'bar' -- foo.rb
untuk mencari diff yang berisi 'bilah' daripada komit yang mengubah jumlah kemunculan 'bilah' (lihat manual git-log).-Sbar
untuk mencari bar . Mungkin ada hubungannya dengan saya menggunakan baris perintah Windows.-G
adalah untuk pencarian regex ... ini juga merupakan referensi yang bagus: stackoverflow.com/a/4472267/2586761Atau mungkin Anda dapat mencoba yang ini (dari pertanyaan terkait Cari semua sejarah git untuk string )
Ini benar-benar akan mencari konten file dan tidak melakukan pesan / tambalan untuk setiap kejadian bar.
sumber
for /F %i in ('git rev-list --all foo.rb') git grep -F bar %i foo.rb
(perhatikan tanda kutip ganda jika nama file atau frasa pencarian memiliki spasi)for /F %i in ('git rev-list --all foo.rb') do git grep -F bar %i foo.rb
(perhatikan tanda kutip ganda jika nama file atau frasa pencarian memiliki spasi)Ada perintah override untuk git log (dari manual ):
Jadi Anda bisa menggunakan:
sumber
--full-diff
tidak berfungsi (seperti pada, tidak ada perbedaan ditampilkan) tanpa-p
, setidaknya pada git 1.7.9.5Saya menggunakan
git log -S "string" --follow -p "path of file"
yang menunjukkan sejarah penuh dari semua perubahan dengan string itu.sumber