--follow
可用于特定文件。
git log --follow -- filename
与其他提供的解决方案的不同之处
注意,其他解决方案包括git log path
(不带--follow
)。如果你想跟踪例如一个目录下的变化,这种方法非常方便,但是当文件被重命名时会出现问题,因此要使用--follow filename
。
git log <somepath>
。 - Yo Ludke+1
中的 --follow
选项可以追踪文件重命名,因此它比 git log -- path
更加稳健。 - Gabe Moothart--follow
选项接受一个“路径”作为参数,该路径可以是文件,也可以是目录。如果是后者,则它将递归运行并报告该点以下所有文件的更改。 (此行为未在手册中记录,可能不是永久的。) - StvnWgit log filename
不遵循文件重命名,即它将显示与文件名(而不是实际文件)相关的所有提交。如果您创建文件 X
和 Y
,对两个文件进行更改,然后删除 Y
并将 X
重命名为 Y
,然后再次进行更改,并运行 git log Y
,您将会得到关于 旧 的 Y
和 新 的 Y
的信息。相反,使用 --follow
,将获取该文件在命名为 X
和 Y
时的提交记录。 - MarSoft我一直在仔细研究这个问题,所有这些答案似乎都没有真正展示给我跨所有分支的所有提交。
通过调整gitk的编辑视图选项,我得出了以下结论:它可以向我展示一个文件的所有提交,而不管它们来自哪个分支,是本地的、reflog中的还是远程的。
gitk --all --first-parent --remotes --reflog --author-date-order -- filename
它也适用于 git log
:
git log --all --first-parent --remotes --reflog --author-date-order -- filename
--reflog
包括被 rebase/amend 或者其他方式丢弃的提交。也许这很明显,但是我尝试在 git log
中使用它时,一直在努力弄清楚为什么会看到 seemingly duplicated commits! - Soren Bjornstadgit log path
应该就是你想要的。从git log
手册页面中可以得知:
[--] <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 -p filename
git log -p mybranch -- filename
或者直接使用 git log --all -- filename
来查找所有分支中的文件。 - Soren Bjornstad执行git log <somepath>
即可,具体请参考手册(git-log(1)
)。
个人喜欢使用git log --stat <path>
,以便查看每个提交对文件的影响。
-p
。 - Cascabelgit show
命令。 - rfunduk另外(自Git 1.8.4以来),还可以仅获取更改了文件中特定部分的所有提交。只需传递起始行和结束行号即可。
返回的结果将是修改此特定部分的提交列表。命令如下:
git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>
其中upperLimit
是start_line_number
,而lowerLimit
是ending_line_number
更多信息-https://www.techpurohit.in/list-some-useful-git-commands
正如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
仅适用于单个文件。
--follow
适用于单个路径,可以是目录。如果传入的是目录,则会递归执行并报告该点以下所有文件的更改。 - StvnW如果你希望查看更改了特定文件的提交中的所有更改(而不仅仅是文件本身的更改),则可以传递--full-diff
参数:
git log -p --full-diff [branch] -- <path>
[branch]
- Anentropicgit log --full-diff --stat -- <path>
正是我要找的命令。 :) - Moberg文件名
提交的更改,而不是文件路径
,则使用以下命令:git log --all -- '*.wmv'
git log filename
- william_grisaitis