对于隐藏在合并提交中的更改
合并提交会自动从Git日志输出中隐藏其更改。无论镐头和反指责没有发现变化。因此,我想要的行已添加,后来又删除了,我想找到将其删除的合并。文件git log -p -- path/file
历史记录仅显示已添加。这是我找到它的最佳方法:
git log -p -U9999 -- path/file
搜索更改,然后向后搜索“ ^ commit”-第一个“ ^ commit”是文件最后一行所在的提交。第二个“ ^ commit”消失之后。第二个提交可能是删除它的那个。本-U9999
是为了显示整个文件内容(每个文件被更改时间后),假设你的文件都是最高9999线。
通过蛮力查找任何相关的合并(将每个可能的合并提交与第一个父合并进行比较,以大量提交为准)
git log --merges --pretty=format:"git diff %h^...%h | grep target_text" HEAD ^$(git merge-base A B) | sh -v 2>&1 | less
(我尝试过更多地限制修订过滤器,但是我遇到了问题,不建议这样做。我要查找的添加/删除更改是在不同的分支上进行的,这些分支在不同的时间被合并,并且A ... B不包括当更改实际上合并到主线中时。)
显示具有这两个提交的Git树(并删除了许多复杂的Git历史记录):
git log --graph --oneline A B ^$(git merge-base A B)
(A是上面的第一个提交,B是上面的第二个提交)
显示A历史和B历史减去A和B历史。
备用版本(似乎比常规的Git历史树更线性地显示路径-但是我更喜欢常规的git历史树):
git log --graph --oneline A...B
三个而不是两个点-三个点表示“ r1 r2-不是$(git merge-base --all r1 r2)。这是可从r1(左侧)或r2(右侧)之一访问的提交集合方面),但不能两者兼而有之。” -来源:“ man gitrevisions”
git log -S<string> /path/to/file
希望在合并(冲突)期间也要显示-c
或-cc
同时显示删除内容