经过多次搜索,我还没有找到一个令人满意的方法,这个方法很容易用来查看Git中移动文件的完整历史记录,更重要的是在Gitk中查看。使用“git log --follow [filePath]”甚至“gitk --follow [filePath]”会为您提供文件所涉及的提交,但不会显示移动前文件的实际更改历史记录。因此,我提出了一个原始但简单的解决方案。
此过程允许您在移动之前查看文件的历史记录。如果有多个动作,则可以重复上述过程。
如果有更好的解决方案可以解决这个问题,特别是如果有办法将这些步骤结合起来显示移动的完整历史记录,我们将非常感激。
答案 0 :(得分:10)
如果您想要查看每次提交中所做的更改,即使文件已重命名,您也可以使用-p
的{{1}}选项:
git log
答案 1 :(得分:4)
这是一个bash函数,它应该显示一个文件的历史(使用gitk)在它的所有化身......我会把它作为练习留给读者,如果他们需要它用于另一个shell:
# bash
gitk_follow () {
while (( "$#" )); do
git log --oneline --name-status --follow $1;
shift;
done | perl -ne 'if( s{^(?:[ACDMRTUXB]|R\d+)\s+}{} ) { s{\s+}{\n}g; print; }' | sort -u
}
# used as:
gitk $(gitk_follow some_file)
更新
更改为使用perl,因为我没有对上一版本中git log的输出给予足够的关注。
答案 2 :(得分:3)
使用不同git log选项的简单函数和用于确定文件名的awk(以及包含gitk需要的" - ")
# bash
gitk_follow () {
while (( "$#" )); do
git log --pretty="" --name-status --follow $1;
shift;
done | awk '{print $NF}' | sort -u
}
# used as:
gitk -- $(gitk_follow some_file)
答案 3 :(得分:0)
另一种方法是使用Atlassian开发的SourceTree应用程序(GUI)。在应用程序内,您可以右键单击该文件,然后选择“Log Selected ...”
在弹出窗口中,它允许您“关注重命名的文件”:
我也使用GitHub for Mac,但在那里没有看到那种功能。
(我与其中任何一方都没有联系!)