我正在处理一个混合 C++ 代码和 HTML 模板文件的大型项目。
我今天了解到,我应该将我对 C++ 文件(并且只有那些)所做的更改合并到另一个分支上,但正如您可能猜到的那样:我不记得我所做的所有提交。
有没有办法让我通过 git 历史搜索符合所有这些条件的所有提交?
- 是我写的
- 位于commit
A
和commit之间B
- 包含对或文件的更改(如果有帮助
.cpp
,它们位于特定的子目录中)。.c
.h
我正在处理一个混合 C++ 代码和 HTML 模板文件的大型项目。
我今天了解到,我应该将我对 C++ 文件(并且只有那些)所做的更改合并到另一个分支上,但正如您可能猜到的那样:我不记得我所做的所有提交。
有没有办法让我通过 git 历史搜索符合所有这些条件的所有提交?
A
和commit之间B
.cpp
,它们位于特定的子目录中)。.c
.h
我终于想出了如何做到这一点:
要搜索与特定作者匹配的提交,您可以使用以下--author
选项:
git log --author=ereOn
要搜索从 commitA
到的提交B
,请使用以下A..B
形式:
git log 9223253452..HEAD
最后,只关心涉及特定文件或路径的提交:
git log -- path_or_file
--
用于指示可选参数的结束和位置参数的开始。
所有结合起来,这给出了:
git log --author=ereOn 9223a6d916c034345..HEAD -- cpp_folder/*
这就像一个魅力:)
查看git log
,运行git log --stat
将显示您正在寻找的许多详细信息,您可以通过管道将其搜索为 grep like git log --stat | grep searchterm
,但这只会为您提供与您的搜索词相关的行。
您可以使用此标志将其限制为作者--author "your name"
在我的机器上git log
的输出是通过 vim/less 运行的,你可以使用 vim 的搜索命令搜索日志/searchterm
,找到所有出现的术语,转到下一个命中n
转到上一个命中N
查看手册页git log