如何在Git中查看单个文件的更改历史记录,完整的详细信息?
我有:
git log -- [filename]
它显示了文件的提交历史记录,但是如何获取每个文件更改的内容?
我正试图从MS SourceSafe过渡到过去那么简单right-click
→ show history
.
为此,我会使用:
gitk [filename]
或者按照文件名过去重命名
gitk --follow [filename]
您可以使用
git log -p filename
让git为每个日志条目生成补丁.
看到
git help log
对于更多选项 - 它实际上可以做很多好事:)为了获得特定提交的差异你可以
git show HEAD
或标识符的任何其他修订.或者使用
gitk
以可视方式浏览更改.
git log --follow -p -- path-to-file
这将显示文件的整个历史记录(包括重命名以外的历史记录以及每次更改的差异).
换句话说,如果命名的文件bar
曾被命名foo
,那么git log -p bar
(没有--follow
选项)将只显示文件的历史记录,直到它被重命名为止 - 当它被称为时,它不会显示文件的历史记录foo
.使用git log --follow -p bar
将显示文件的整个历史记录,包括文件的所有更改foo
.该-p
选项可确保每次更改都包含差异.
如果您希望保持基于文本,则可能需要使用tig.
快速安装:
apt-get:# apt-get install tig
自制软件(OS X):$ brew install tig
使用它来查看单个文件的历史记录:tig [filename]
或浏览详细的回购历史记录:tig
类似gitk
但基于文本.支持终端颜色!
git whatchanged -p filename
git log -p filename
在这种情况下也相当于.
您还可以查看文件中特定代码行的更改时间git blame filename
.这将为文件中的每一行打印出一个简短的提交ID,作者,时间戳和完整的代码行.在您发现错误并且想知道它何时被引入(或者它是谁的错误)之后,这非常有用.
如果您使用SourceTree可视化您的存储库(它是免费且非常好的),您可以右键单击文件并选择Log Selected
显示屏(下方)比gitk更友好,列出的大多数其他选项.不幸的是(此时)没有简单的方法从命令行启动此视图 - SourceTree的CLI目前只打开repos.
要显示哪个修订版本和作者上次修改了文件的每一行:
git blame filename
或者如果你想使用强大的blame GUI:
git gui blame filename
通过阅读并播放后的其他答案摘要:
通常的命令行命令是
git log --follow --all -p dir/file.c
但是你也可以使用gitk(gui)或tig(text-ui)来提供更加人性化的方式来查看它.
gitk --follow --all -p dir/file.c tig --follow --all -p dir/file.c
在debian/ubuntu下,这些可爱工具的安装命令如预期:
sudo apt-get install gitk tig
而我目前正在使用:
alias gdf='gitk --follow --all -p'
这样我就可以输入gdf dir
以获取子目录中所有内容的焦点历史记录dir
.
将此别名添加到.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
并使用这样的命令:
> git lg > git lg -- filename
输出看起来与gitk输出几乎完全相同.请享用.
最近我发现tig
并发现它非常有用.在某些情况下,我希望它能做到A或B,但大部分时间它都很整洁.
对于您的情况,tig
可能是您正在寻找的.
http://jonas.nitro.dk/tig/
我为这个目的编写了git-playback
pip install git-playback git playback [filename]
这样既可以在命令行中显示结果(例如git log -p
),也可以使用箭头键(例如gitk
)逐步执行每次提交.
要么:
gitx --
如果你正在使用gitx
如果要查看文件的整个历史记录,包括在所有其他分支上使用:
gitk --all
如果您在Repository菜单下使用git GUI(在Windows上),则可以使用"Visualize master's History".突出显示顶部窗格中的提交和右下角的文件,您将在左下方看到该提交的差异.
使用优秀的Git Extensions,您可以访问文件仍然存在的历史记录中的一个点(如果它已被删除,否则只需转到HEAD),切换到File tree
选项卡,右键单击该文件并选择File history
.
默认情况下,它通过重命名跟随文件,Blame
选项卡允许查看给定修订的名称.
它有一些小问题,比如fatal: Not a valid object name
在View
单击删除修订时在选项卡中显示,但我可以忍受.:-)
您可以将vscode与GitLens一起使用,这是一个非常强大的工具。安装GitLens后,转到GitLens选项卡,选择FILE HISTORY
即可浏览。
您也可以尝试使用它列出更改了文件特定部分的提交(在Git 1.8.4中实现)。
返回的结果将是修改此特定部分的提交列表。命令:
git log --pretty=short -u -L, :
其中upperLimit是文件的起始行号,lowerLimit是文件的结束行号。
有关更多详细信息,请访问https://www.techpurohit.com/list-some-useful-git-commands
SmartGit:
在菜单中启用以显示未更改的文件:查看/显示未更改的文件
右键单击该文件,然后选择“日志”或按“ Ctrl-L”