2009-11-23 33 views
108

Với Subversion tôi có thể sử dụng TortoiseSVN để xem lịch sử/nhật ký của một tệp.Cách xem lịch sử tập tin trong Git?

Làm cách nào tôi có thể thực hiện việc này với Git?

Chỉ cần tìm hồ sơ lịch sử cho một tệp cụ thể và sau đó là khả năng so sánh các phiên bản khác nhau.

Trả lời

133

Sử dụng git log để xem lịch sử cam kết. Mỗi cam kết có một thông số sửa đổi liên quan, đó là khóa băm (ví dụ: 14b8d0982044b0c49f7a855e396206ee65c0e787b410ad4619d296f9d37f0db3d0ff5b9066838b39). Để xem sự khác biệt giữa hai cam kết khác nhau, sử dụng git diff với vài ký tự đầu tiên của specifiers sửa đổi của cả hai cam kết, như vậy:

# 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 

Nếu bạn muốn để có được một cái nhìn tổng quan hơn tất cả những khác biệt đã xảy ra từ cam kết cam kết, sử dụng git log hoặc git whatchanged với các tùy chọn bản vá:

# 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 
+6

Cảm ơn mẹo -p, điều này rất hữu ích cho việc tìm kiếm bản sửa đổi nào có liên quan đến một chút mã. –

82

Có vẻ như bạn muốn git diff và/hoặc git log. Ngoài ra, hãy xem gitk

gitk path/to/file 
git diff path/to/file 
git log path/to/file 
+24

Cám ơn con đường gitk/to/file – zzapper

+3

Đây là một cái gật đầu cho gitk, cung cấp một cách tuyệt vời để duyệt qua tất cả những bức ảnh của một tập tin duy nhất trong một repo git. – Bitmanic

+0

GitK là cậu bé vàng ở đây. – Jonathan

26

bạn cũng có thể sử dụng tig cho một trình duyệt kho git ncurses-based tốt đẹp. Để xem lịch sử của một tập tin:

tig path/to/file 
+3

Không biết bạn có thể làm điều này với 'tig'. Hoàn hảo. – mrak

10

Nhiều Git trình duyệt lịch sử, bao gồm git log (và 'git log --graph'), gitk (trong Tcl/Tk, một phần của Git), QGit (trong Qt), tig (giao diện chế độ văn bản thành git, sử dụng ncurses), giới hạn đường dẫn hỗ trợ Giggle (GTK +), TortoiseGit và git-cheetah (ví dụ: gitk path/to/file).

+1

Bạn có thể chỉ cho tôi cách thiết lập điều này trong TortoiseGit không? –

+0

@ RobertVuković Tôi biết đây là câu hỏi cũ ... nhưng hãy xem câu trả lời của tôi dưới đây! – bluevoodoo1

5

Tất nhiên, nếu bạn muốn có thứ gì đó gần TortoiseSVN nhất có thể, bạn chỉ có thể sử dụng TortoiseGit.

32

Tôi thích sử dụng gitk name_of_file

này cho thấy một danh sách tốt đẹp của những thay đổi đã xảy ra vào một tập tin tại từng cam kết, thay vì hiển thị những thay đổi cho tất cả các tập tin. Làm cho nó dễ dàng hơn để theo dõi một cái gì đó đã xảy ra.

2

TortoiseGit cũng cung cấp command line tool để xem lịch sử của tệp. Sử dụng PowerShell:

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

ưa thích của tôi là git log -p <filename>, mà sẽ cung cấp cho bạn một lịch sử của tất cả các cam kết của tập tin được cũng như diffs cho từng cam kết.

1

git log --all -- path/to/file nên làm việc

+0

Không có liên kết nào trong câu trả lời của tôi @ineersa –

Các vấn đề liên quan