Bagaimana saya dapat melihat riwayat perubahan dari masing-masing file di Git, lengkap rincian dengan apa yang telah berubah?
Saya akan sampai sejauh ini:
git log -- [filename]
yang menunjukkan saya komit sejarah dari file, tetapi bagaimana cara saya mendapatkan isi dari masing-masing perubahan file?
I'm mencoba untuk membuat transisi dari MS SourceSafe dan yang digunakan untuk menjadi sederhana klik-kanan
→ menunjukkan sejarah
.
Untuk ini saya'd gunakan:
gitk [filename]
atau untuk mengikuti filename lalu mengganti nama
gitk --follow [filename]
Anda dapat menggunakan
git log -p filename
untuk membiarkan git menghasilkan patch untuk setiap entri log.
Lihat
git help log
untuk lebih banyak pilihan - itu benar-benar dapat melakukan banyak hal-hal baik :) hanya Untuk mendapatkan diff tertentu komit anda dapat
git show HEAD
atau revisi oleh pengenal. Atau gunakan
gitk
untuk menelusuri perubahan-perubahan secara visual.
git log --follow-p-jalan-ke-file
Ini akan menunjukkan seluruh sejarah file (termasuk sejarah luar mengganti nama dan dengan diffs untuk setiap perubahan).
Dengan kata lain, jika file yang bernama bar
dulunya bernama foo
, kemudian git log -p bar
(tanpa tanda - ikuti
pilihan) hanya akan menampilkan file's sejarah sampai ke titik di mana itu namanya-tidak't menunjukkan file's sejarah ketika itu dikenal sebagai foo
. Menggunakan git log --follow-p barakan menampilkan file's seluruh sejarah, termasuk setiap perubahan pada file yang ketika itu dikenal sebagai
foo.
-P` opsi memastikan bahwa diffs disertakan untuk setiap perubahan.
Jika anda lebih memilih untuk menginap berbasis teks, anda mungkin ingin menggunakan tig.
Cepat Menginstal:
# apt-get install tig
$ brew install tig
Menggunakannya untuk melihat sejarah pada sebuah file tunggal: tig [nama]
Atau browsing rinci repo sejarah: cekcok
Mirip dengan gitk
tapi berbasis teks. Mendukung warna di terminal!
git argente registry cleaner -p filename
juga setara dengan git log -p filename
dalam kasus ini.
Anda juga dapat melihat ketika sebuah baris tertentu dari kode di dalam file tersebut diubah dengan git menyalahkan filename
. Ini akan mencetak pendek komit id, penulis, timestamp, dan baris lengkap dari kode untuk setiap baris dalam file.
Hal ini sangat berguna setelah anda've menemukan bug dan anda ingin tahu ketika itu diperkenalkan (atau yang's kesalahan itu).
Jika anda menggunakan SourceTree untuk memvisualisasikan repositori anda (itu's gratis dan cukup baik) anda bisa klik kanan file dan pilih Log yang Dipilih
Tampilan (di bawah) jauh lebih ramah dari gitk dan paling pilihan lain yang terdaftar. Sayangnya (saat ini) tidak ada cara mudah untuk peluncuran ini melihat dari baris perintah — SourceTree's CLI saat ini hanya membuka repos.
Ringkasan dari jawaban yang lain setelah membaca melalui mereka dan bermain sedikit:
Biasanya perintah baris perintah akan
git log --follow --all -p dir/file.c
Tapi anda juga dapat menggunakan salah gitk (gui) atau tig (teks-ui) untuk memberikan lebih banyak lagi manusia-dibaca cara melihat itu.
gitk --follow --all -p dir/file.c
tig --follow --all -p dir/file.c
Di bawah debian/ubuntu, install perintah ini indah yang sesuai seperti yang diharapkan :
sudo apt-get install gitk tig
Dan saya'm saat ini menggunakan:
alias gdf='gitk --follow --all -p'
sehingga saya hanya bisa mengetik gdf dir
untuk mendapatkan difokuskan sejarah dari segala sesuatu di subdirektori dir
.
Tambahkan alias ini untuk anda .gitconfig:
[alias]
lg = log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\n--abbrev-commit --date=relative
Dan gunakan perintah seperti ini:
> git lg
> git lg -- filename
Output akan terlihat hampir sama persis seperti gitk output. Menikmati.
Akhir-akhir ini saya menemukan cekcok
dan ternyata sangat berguna. Ada beberapa kasus I'd berharap itu tidak A atau B, tetapi sebagian besar waktu itu's lebih rapi.
Untuk kasus anda, tig <file>
mungkin apa yang anda're looking for.
Saya menulis git-pemutaran untuk tujuan yang tepat
pip install git-playback
git playback [filename]
Ini memiliki manfaat baik menampilkan hasil di command line (seperti git log -p) sementara juga membiarkan anda melangkah melalui masing-masing komit menggunakan tombol panah (seperti
gitk`).
Jika anda're menggunakan git GUI (pada Windows) di bawah Repositori menu dapat anda gunakan "Memvisualisasikan master's Sejarah". Sorot komit di bagian atas panel dan file di kanan bawah dan anda'll melihat diff untuk komit di kiri bawah.
Dengan sangat baik Git Extensions, anda pergi ke sebuah titik dalam sejarah di mana file yang masih ada (jika itu telah dihapus, jika tidak, hanya pergi ke KEPALA), beralih ke File tree
tab, klik kanan pada file tersebut dan pilih File sejarah
.
Secara default, berikut file melalui mengganti nama, dan Menyalahkan
tab memungkinkan untuk melihat nama di suatu revisi.
Ini memiliki beberapa minor gotchas, seperti menunjukkan fatal: Tidak valid nama objek
di View
tab ketika mengklik pada penghapusan revisi, tapi aku bisa hidup dengan itu. :-)
Anda juga dapat mencoba ini yang berisi daftar komit yang telah mengubah bagian tertentu dari sebuah file (Dilaksanakan di Git 1.8.4).
Hasil yang dikembalikan akan menjadi daftar berbuat yang dimodifikasi bagian tertentu. Perintah :
git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>
di mana upperLimit adalah start_line_number dan lowerLimit adalah ending_line_number file.
Rincian lebih lanjut di https://www.techpurohit.com/list-some-useful-git-commands
Jika anda menggunakan TortoiseGit anda harus dapat klik kanan pada file tersebut dan lakukan TortoiseGit --> Menunjukkan Log
. Di jendela yang muncul, pastikan:
'Tampilkan Seluruh Proyek
' opsi ini tidak dicentang.
'cabang-Cabang
' opsi ini dicentang.