Bagaimana cara melihat riwayat file di Git?

133

Dengan Subversion saya bisa menggunakan TortoiseSVN untuk melihat riwayat / log file.

Bagaimana saya bisa melakukan ini dengan Git?

Hanya mencari catatan riwayat untuk file tertentu, dan kemudian kemampuan untuk membandingkan berbagai versi.

mrblah
sumber

Jawaban:

156

Gunakan git loguntuk melihat riwayat komit. Setiap komit memiliki specifier revisi terkait yang merupakan kunci hash (misalnya 14b8d0982044b0c49f7a855e396206ee65c0e787dan b410ad4619d296f9d37f0db3d0ff5b9066838b39). Untuk melihat perbedaan antara dua komit yang berbeda, gunakan git diffdengan beberapa karakter pertama dari specifier revisi dari kedua komit, seperti:

# diff between commits 14b8... and b410...
git diff 14b8..b410
# only include diff of specified files
git diff 14b8..b410 path/to/file/a path/to/file/b

Jika Anda ingin mendapatkan gambaran umum tentang semua perbedaan yang terjadi dari komit ke komit, gunakan git logatau git whatchangeddengan opsi tambalan:

# include patch displays in the commit history
git log -p
git whatchanged -p
# only get history of those commits that touch specified paths
git log path/a path/b
git whatchanged path/c path/d
Kristen
sumber
7
Terima kasih atas tip -p, itu sangat berguna untuk menemukan revisi mana yang melibatkan sedikit kode.
Christopher Pickslay
100

Sepertinya Anda ingin git diff dan / atau git log . Lihat juga gitk

gitk path/to/file
git diff path/to/file
git log path/to/file
baudtack
sumber
3
Inilah anggukan lain untuk gitk, yang menyediakan cara hebat untuk menelusuri semua snapshot dari satu file dalam repo git.
Ray Brown
1
Secara default gitk menampilkan diff ditambah 10 baris konteks, tetapi bagaimana jika Anda ingin melihat snapshot dari keseluruhan file? Cukup set "Lines of context" ke nilai yang besar (mis. 100000). Kemudian Anda dapat membalik-balik komit dan melihat seluruh file pada waktu yang berbeda. (Anda juga dapat mencari di dalam file.)
antinome
35

Saya suka menggunakan gitk name_of_file

Ini menunjukkan daftar perubahan yang terjadi pada file di setiap commit, alih-alih menunjukkan perubahan pada semua file. Membuatnya lebih mudah untuk melacak sesuatu yang terjadi.

Gustavo Litovsky
sumber
30

Anda juga bisa menggunakan tig untuk browser repositori git yang bagus dan berbasis ncurses. Untuk melihat riwayat file:

tig path/to/file
pengguna217433
sumber
29

Favorit saya adalah git log -p <filename>, yang akan memberi Anda sejarah semua komit dari file yang diberikan serta perbedaan untuk setiap komit.

helikopter
sumber
11

Banyak browser riwayat Git, termasuk git log(dan 'git log --graph'), gitk (dalam Tcl / Tk, bagian dari Git), QGit (dalam Qt), tig (antarmuka mode teks ke git, menggunakan ncurses), Giggle (dalam GTK +), TortoiseGit dan pembatasan jalur dukungan git-cheetah (mis gitk path/to/file.).

Jakub Narębski
sumber
@ RobertVuković Saya tahu ini adalah pertanyaan lama ... tetapi lihat jawaban saya di bawah ini!
brianc
4

Tentu saja, jika Anda menginginkan sesuatu yang sedekat mungkin dengan TortoiseSVN, Anda bisa menggunakan TortoiseGit .

Jörg W Mittag
sumber
Kecuali bahwa ekstensi shell TortoiseSvn berisi perintah untuk menampilkan riwayat file tunggal, sedangkan TortoiseGit tidak.
Neutrino
3

git log --all -- path/to/file harus bekerja

Edson Medina
sumber
Tidak ada tautan dalam jawaban saya @ineersa
Edson Medina
1
Ini harus menjadi jawaban teratas. Saya tidak suka menggunakan alat gui jelek
Grobi
2

TortoiseGit juga menyediakan alat baris perintah untuk melihat riwayat file. Menggunakan PowerShell:

C:\Program` Files\TortoiseGit\bin\TortoiseGitProc.exe /command:log /path:"c:\path\to\your\file.txt"
brianc
sumber