使用优秀的Git Extensions,您可以访问文件仍然存在的历史记录中的一个点(如果它已被删除,否则只需转到HEAD),切换到 File tree 选项卡,右键单击该文件并选择 File history .
默认情况下,它通过重命名跟随文件, Blame 选项卡允许查看给定修订的名称 .
它有一些小问题,比如在点击删除修订版时在 View 标签中显示 fatal: Not a valid object name ,但我可以忍受 . :-)
105
我正在寻找的答案不是在这个帖子中看到我为了提交而上演的文件的变化 . 即
git diff --cached
14
为此,我会使用:
gitk [filename]
或者按照文件名过去重命名
gitk --follow [filename]
9
您可以使用
git log -p filename
让git为每个日志条目生成补丁 .
看到
git help log
更多选项 - 它实际上可以做很多好事:)为了获得特定提交的差异你可以
git show HEAD
或标识符的任何其他修订 . 或者使用
gitk
以可视方式浏览更改 .
7
git log --follow -p -- file
这将显示文件的 entire 历史记录(包括重命名以外的历史记录以及每次更改的差异) .
换句话说,如果名为 bar 的文件曾被命名为 foo ,那么 git log -p bar (没有 --follow 选项)将仅显示文件's history up to the point where it was renamed -- it won' t显示文件的历史记录,当它被称为 foo 时 . 使用 git log --follow -p bar 将显示文件的整个历史记录,包括文件被称为 foo 时的任何更改 . -p 选项确保每次更改都包含差异 .
您还可以查看文件中的特定代码行何时更改为git blame filename . 这将为文件中的每一行打印出一个简短的提交ID,作者,时间戳和完整的代码行 . 这是非常有用的've found a bug and you want to know when it was introduced (or who'故障之后) .
21 回答
最近我发现
tig
并发现它非常有用 . 在某些情况下,我相当整洁 .对于您的情况,
tig <filename>
可能是您正在寻找的 .http://jonas.nitro.dk/tig/
为了这个目的,我写了git-playback
这样既可以在命令行中显示结果(如
git log -p
),也可以使用箭头键(如gitk
)逐步执行每次提交 .要么:
gitx -- <path/to/filename>
如果你正在使用gitx
如果要查看文件的整个历史记录,包括在所有其他分支上使用:
如果您在Repository菜单下使用git GUI(在Windows上),则可以使用“Visualize master's History” . 突出显示顶部窗格中的提交和右下角的文件,您将在左下方看到该提交的差异 .
您也可以尝试使用它来列出已更改文件特定部分的提交(在Git 1.8.4中实现) .
返回的结果将是修改此特定部分的提交列表 . 命令如下:
其中upperLimit是start_line_number和lowerLimit是文件的ending_line_number .
如果您使用TortoiseGit,您应该能够右键单击该文件并执行
TortoiseGit --> Show Log
. 在弹出的窗口中,确保:未选中
Show Whole Project
'选项 .选中
All Branches
'选项 .SmartGit:
在菜单中启用以显示未更改的文件:查看/显示未更改的文件
右键单击该文件并选择'Log'或按'Ctrl-L'
git diff -U <filename>
给你一个统一的差异 .它应该是红色和绿色 . 如果不是,请先运行:
git config color.ui auto
.如果您正在使用带有git插件的eclipse,它与历史记录具有出色的比较视图 . 右键单击该文件并选择“与...比较”=>“历史”
使用优秀的Git Extensions,您可以访问文件仍然存在的历史记录中的一个点(如果它已被删除,否则只需转到HEAD),切换到
File tree
选项卡,右键单击该文件并选择File history
.默认情况下,它通过重命名跟随文件,
Blame
选项卡允许查看给定修订的名称 .它有一些小问题,比如在点击删除修订版时在
View
标签中显示fatal: Not a valid object name
,但我可以忍受 . :-)我正在寻找的答案不是在这个帖子中看到我为了提交而上演的文件的变化 . 即
为此,我会使用:
或者按照文件名过去重命名
您可以使用
让git为每个日志条目生成补丁 .
看到
更多选项 - 它实际上可以做很多好事:)为了获得特定提交的差异你可以
或标识符的任何其他修订 . 或者使用
以可视方式浏览更改 .
git log --follow -p -- file
这将显示文件的 entire 历史记录(包括重命名以外的历史记录以及每次更改的差异) .
换句话说,如果名为
bar
的文件曾被命名为foo
,那么git log -p bar
(没有--follow
选项)将仅显示文件's history up to the point where it was renamed -- it won' t显示文件的历史记录,当它被称为foo
时 . 使用git log --follow -p bar
将显示文件的整个历史记录,包括文件被称为foo
时的任何更改 .-p
选项确保每次更改都包含差异 .如果您希望保持基于文本,则可能需要使用 tig .
快速安装:
apt-get :
# apt-get install tig
Homebrew (OS X) :
$ brew install tig
用它来查看单个文件的历史记录:
tig [filename]
或者浏览详细的回购历史:
tig
与
gitk
类似,但基于文本 . 终端支持颜色!在这种情况下,git whatchanged -p filename也等同于git log -p filename .
您还可以查看文件中的特定代码行何时更改为git blame filename . 这将为文件中的每一行打印出一个简短的提交ID,作者,时间戳和完整的代码行 . 这是非常有用的've found a bug and you want to know when it was introduced (or who'故障之后) .
SourceTree用户
如果您使用SourceTree可视化您的存储库(它是免费且非常好),您可以右键单击一个文件并选择 Log Selected
显示屏(下方)比gitk更友好,列出的大多数其他选项 . 不幸的是(此时)没有简单的方法从命令行启动此视图 - SourceTree的CLI目前只打开repos .
要显示哪个修订版本和作者上次修改了文件的每一行:
或者如果你想使用强大的blame GUI:
通过阅读并播放后的其他答案摘要:
通常的命令行命令是
但是你也可以使用gitk(gui)或tig(text-ui)来提供更加人性化的方式来查看它 .
在debian / ubuntu下,这些可爱工具的安装命令如预期:
而我目前正在使用:
这样我就可以输入
gdf dir
来获取子目录dir
中所有内容的焦点历史记录 .将此别名添加到.gitconfig:
并使用这样的命令:
输出看起来几乎与gitk输出完全相同 . 请享用 .