Git'te dosya geçmişi nasıl görüntülenir?


133

Subversion ile bir dosyanın geçmişini / günlüğünü görüntülemek için TortoiseSVN'yi kullanabilirim.

Bunu Git ile nasıl yapabilirim?

Sadece belirli bir dosya için geçmiş kaydı ve ardından farklı sürümleri karşılaştırma yeteneği arıyorum.

Yanıtlar:


156

git logKaydetme geçmişini görüntülemek için kullanın . Her kaydetmenin, karma anahtar olan ilişkili bir revizyon belirticisi vardır (örneğin 14b8d0982044b0c49f7a855e396206ee65c0e787ve b410ad4619d296f9d37f0db3d0ff5b9066838b39). İki farklı kaydetme arasındaki farkı görüntülemek için git diff, her iki kaydetmenin de revizyon belirleyicisinin ilk birkaç karakteriyle birlikte kullanın , örneğin:

# 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

Kaydetmeden commit'e, kullanın git logveya git whatchangedyama seçeneğinden meydana gelen tüm farklılıklar hakkında bir genel bakış elde etmek istiyorsanız :

# 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

7
-P ipucu için teşekkürler, bu, hangi revizyonların biraz kod içerdiğini bulmak için çok kullanışlıdır.
Christopher Pickslay

100

Görünüşe göre git diff ve / veya git log istiyorsun . Gitk'e de göz atın

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

3
İşte gitk için, bir git deposundaki tek bir dosyanın tüm anlık görüntülerine göz atmak için harika bir yol sağlayan başka bir selam.
Ray Brown

1
Varsayılan olarak gitk, diff artı 10 satır bağlamı gösterir, ancak ya tüm dosyanın anlık görüntüsünü görmek isterseniz? Basitçe "Bağlam çizgileri" ni büyük bir değere ayarlayın (ör. 100000). Ardından, taahhütler arasında ileri geri hareket edebilir ve tüm dosyayı farklı zaman noktalarında görebilirsiniz. (Dosya içinde de arama yapabilirsiniz.)
antinome

35

Gitk name_of_file kullanmayı seviyorum

Bu, tüm dosyalardaki değişiklikleri göstermek yerine, her kaydetmede bir dosyaya yapılan değişikliklerin güzel bir listesini gösterir. Olan bir şeyin izini sürmeyi kolaylaştırır.


30

tig'i güzel, ncurses tabanlı bir git deposu tarayıcısı için de kullanabilirsiniz . Bir dosyanın geçmişini görüntülemek için:

tig path/to/file

29

Benim favorim, git log -p <filename>size verilen dosyanın tüm işlemlerinin bir geçmişini ve her bir commit için farkları verecek.


11

git log(Ve 'git log --graph'), gitk (Tcl / Tk içinde, Git'in bir parçası), QGit (Qt'de), tig (ncurses kullanarak git için metin modu arabirimi), Giggle (içinde) dahil olmak üzere birçok Git geçmişi tarayıcısı GTK +), TortoiseGit ve git-cheetah yolu sınırlamayı destekler (örn. gitk path/to/file).


@ RobertVuković Bunun eski bir soru olduğunu biliyorum ... ama aşağıdaki cevabıma bakın!
brianc

4

Eğer mümkün olduğunca TortoiseSVN için yakın olarak bir şey istiyorum Elbette, sadece kullanabilirsiniz TortoiseGit .


TortoiseSvn kabuk uzantılarının tek bir dosyanın geçmişini gösteren bir komut içermesi dışında, TortoiseGit içermez.
Neutrino



2

TortoiseGit ayrıca bir dosyanın geçmişini görmek için bir komut satırı aracı sağlar. PowerShell'i kullanma:

C:\Program` Files\TortoiseGit\bin\TortoiseGitProc.exe /command:log /path:"c:\path\to\your\file.txt"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.