oneline - git show




使用Git版本控制查看文件的更改歷史記錄 (14)

如何在Git中查看單個文件的更改歷史記錄,完整的詳細信息?

我有:

git log -- [filename]

它顯示了文件的提交歷史記錄,但是如何獲取每個文件更改的內容?

我正在嘗試從MS SourceSafe轉換,過去只是簡單的right-clickshow history


SourceTree用戶

如果您使用SourceTree可視化您的存儲庫(它是免費且非常好),您可以右鍵單擊文件並選擇Log Selected

顯示屏(下方)比gitk更友好,列出的大多數其他選項。 不幸的是(此時)沒有簡單的方法從命令行啟動此視圖 - SourceTree的CLI目前只打開repos。


git whatchanged -p filename在這種情況下也相當於git log -p filename

您還可以看到文件中的特定代碼行何時使用git blame filename更改。 這將為文件中的每一行打印出一個簡短的提交ID,作者,時間戳和完整的代碼行。 在找到錯誤並且想知道它何時被引入(或者它是誰的錯誤)之後,這非常有用。


git log --follow -p -- file

這將顯示文件的整個歷史記錄(包括重命名以外的歷史記錄以及每次更改的差異)。

換句話說,如果名為bar的文件曾被命名為foo ,那麼git log -p bar (不帶--follow選項)將只顯示文件的歷史記錄,直到它被重命名為止 - 它不會顯示文件的歷史,當它被稱為foo 。 使用git log --follow -p bar將顯示文件的整個歷史記錄,包括文件被稱為foo時的任何更改。 -p選項確保每次更改都包含差異。


SmartGit

  1. 在菜單中啟用顯示未更改的文件:查看/顯示未更改的文件
  2. 右鍵單擊該文件並選擇“Log”或按“Ctrl-L”

如果您使用TortoiseGit,您應該能夠右鍵單擊該文件並執行TortoiseGit --> Show Log 。 在彈出的窗口中,確保:

  • 未選中“ Show Whole Project ”選項。

  • 選中“ All Branches ”選項。


如果您在Repository菜單下使用git GUI(在Windows上),則可以使用“Visualize master's History”。 突出顯示頂部窗格中的提交和右下角的文件,您將在左下方看到該提交的差異。


如果您正在使用帶有git插件的eclipse,它與歷史記錄具有出色的比較視圖。 右鍵單擊該文件並選擇“與...比較”=>“歷史”


如果要查看文件的整個歷史記錄, 包括所有其他分支上使用:

gitk --all <filename>

您也可以嘗試使用它來列出已更改文件特定部分的提交(在Git 1.8.4中實現)。

返回的結果將是修改此特定部分的提交列表。 命令如下:

git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>

其中upperLimit是start_line_number,lowerLimit是文件的ending_line_number。


您可以使用

git log -p filename

讓git為每個日誌條目生成補丁。

看到

git help log

更多選項 - 它實際上可以做很多好事:)為了獲得特定提交的差異你可以

git show HEAD 

或標識符的任何其他修訂。 或者使用

gitk

以可視方式瀏覽更改。


我為這個目的編寫了git-playback

pip install git-playback
git playback [filename]

這樣既可以在命令行中顯示結果(如git log -p ),也可以使用箭頭鍵(如gitk )逐步完成每次提交。


最近我發現了tig並發現它非常有用。 在某些情況下,我希望它能做到A或B,但大部分時間它都很整潔。

對於您的情況, tig <filename>可能是您正在尋找的。

http://jonas.nitro.dk/tig/


要么:

gitx -- <path/to/filename>

如果你正在使用gitx


要顯示哪個修訂版本和作者上次修改了文件的每一行:

git blame filename

或者如果你想使用強大的blame GUI:

git gui blame filename




git-log