如何在Git中查看单个文件的更改历史记录,完整的详细信息?
我有:
git log -- [filename]
它显示了文件的提交历史记录,但是如何获取每个文件更改的内容?
我正在尝试从MS SourceSafe过渡,而过去这很简单 right-click
→ show history
。
如何在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 -- file
这将显示 整个 文件的历史记录(包括重命名以外的历史记录以及每次更改的差异)。
换句话说,如果文件名为 bar
曾经被命名 foo
, 然后 git log -p bar
(没有 --follow
选项)只会显示文件的历史记录,直到它被重命名为止 - 当它被称为文件时,它不会显示文件的历史记录 foo
。运用 git log --follow -p bar
将显示文件的整个历史记录,包括文件被称为时的任何更改 foo
。该 -p
选项确保每次更改都包含差异。
如果您希望保持基于文本,则可能需要使用 TIG。
快速安装:
# apt-get install tig
$ brew install tig
使用它来查看单个文件的历史记录: tig [filename]
或浏览详细的回购历史记录: tig
如同 gitk
但是基于文本。终端支持颜色!
git whatchanged -p filename
也相当于 git log -p filename
在这种情况下。
您还可以查看文件中特定代码行的更改时间 git blame filename
。这将为文件中的每一行打印出一个简短的提交ID,作者,时间戳和完整的代码行。
在找到错误并且想知道它何时被引入(或者它是谁的错误)之后,这非常有用。
如果您使用SourceTree可视化您的存储库(它是免费且非常好),您可以右键单击文件并选择 记录已选中
显示屏(下方)比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输出完全相同。请享用。
我写了 混帐回放 为了这个目的
pip install git-playback
git playback [filename]
这样做的好处是可以在命令行中显示结果(比如 git log -p
)同时也允许您使用箭头键(如 gitk
)。