列出特定文件的所有提交
有没有办法列出所有改变了特定文件的提交?
--follow
适用于特定的文件
git log --follow filename
区别于其他解决scheme
请注意,其他解决scheme包括git log path
(不带--follow
)。 如果你想跟踪目录中的变化,那么这种方法是很方便的,但是当文件被重命名时(因此使用 – --follow filename
),它会发生一些变化。
git log path
应该做你想做的。 从git log
man :
[--] <path>… Show only commits that affect any of the specified paths. To prevent confusion with options and branch names, paths may need to be prefixed with "-- " to separate them from options or refnames.
应该像git log <somepath>
一样简单,检查手册页( git-log(1)
)。
我个人喜欢使用git log --stat <path>
所以我可以看到每个提交对文件的影响。
使用下面的命令获取特定文件的提交:
git log -p filename
我一直在密切关注这一点,所有这些答案似乎并没有真正向我展示所有分支机构的所有承诺。
这是我用gitk编辑视图选项搞乱的。 这显示了我所有提交文件,无论分支,本地,reflog和远程。
gitk --all --first-parent --remotes --reflog --author-date-order -- filename
正如jackrabb1t所指出的那样, --follow
继续列出重命名/移动之外的历史logging, --follow
更加强大。 因此,如果您正在查找当前不在同一path中的文件或者在各种提交中已经重命名的文件,–follow将跟踪它。
如果要显示名称/path更改,这可能是更好的select:
git log --follow --name-status -- <path>
但是,如果你想要一个更紧凑的列表,只有重要的事情:
git log --follow --name-status --format='%H' -- <path>
甚至
git log --follow --name-only --format='%H' -- <path>
缺点是 – --follow
只适用于单个文件。
如果您正在尝试 – 关注在之前的提交用途中删除的文件
git log --follow -- filename
另外(既然git 1.8.4),也可以只获取已经改变了文件特定部分的所有提交。 你可以通过传递起始行和结束行号来获得。
返回的结果将是修改这个特定部分的提交列表。 命令如下所示:
git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>
其中lowerLimit
是start_line_number
, lowerLimit
是ending_line_number
使用git log --all <filename>
查看影响所有分支中的<filename>
的提交。
如果你想查看所有提交的文件,在所有的分支中,使用这个
git log --follow --all <filepath>
gitk <path_to_filename>
假设已经安装了“gitk”包。 如果没有安装,请执行此操作
sudo apt-get install gitk
然后尝试上面的命令。 这是Linux的..它可能会帮助Linux用户,如果他们想要GUI。
如果你想查找所有提交的filename
而不是 filename
filepath
git log --all -- '*.wmv'
在Linux中,你可以使用gitk。 它可以使用“sudo apt-get install git-gui gitk”进行安装。 它可以用来查看特定文件的提交“gitk”
# shows commit history with patch git log -p -<no_of_commits> --follow <file_name> # shows brief details like "1 file changed, 6 insertions(+), 1 deletion(-)" git log --stat --follow <file_name>
参考