是否有一种方法可以列出更改特定文件的所有提交?
当前回答
它应该像git log <somepath>;查看manpage (git-log(1))。
我个人喜欢使用git log——stat <path>,这样我就可以看到每次提交对文件的影响。
其他回答
正如jackrabb1t指出的那样,——follow更加健壮,因为它继续列出重命名/移动之外的历史记录。因此,如果你正在寻找一个当前不在同一路径上的文件,或者一个在多次提交中被重命名的文件,——follow将跟踪它。
如果你想可视化名称/路径的变化,这可能是一个更好的选择:
git log --follow --name-status -- <path>
但如果你想要一个更紧凑的清单,只列出重要的事情:
git log --follow --name-status --format='%H' -- <path>
甚至
git log --follow --name-only --format='%H' -- <path>
缺点是—follow只适用于单个文件。
如果你希望看到提交中对特定文件的所有更改(而不仅仅是对文件本身的更改),你可以传递——full-diff:
git log -p --full-diff [branch] -- <path>
获取特定文件的所有提交:
git rev-list HEAD—oneline FileName
例如
git rev-list HEAD—oneline index.html
输出
7a2bb2f update_index_with_alias
6c03e56 update_changes
e867142 Revert "add_paragraph"
参见gif图片
使用git log——all <filename>查看所有分支中影响<filename>的提交。
我一直在仔细研究这个问题,所有这些答案似乎并没有真正向我展示所有分支的所有提交。
以下是我通过摆弄gitk编辑视图选项得到的结果。这显示了一个文件的所有提交,而不考虑分支、本地、reflog和远程。
gitk --all --first-parent --remotes --reflog --author-date-order -- filename
它也适用于git日志:
git log --all --first-parent --remotes --reflog --author-date-order -- filename
推荐文章
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支
- 自定义SSH端口上的Git
- git如何显示不存在于.gitignore中的未跟踪文件
- Git错误:遇到7个文件应该是指针,但不是