Git / Github - 提交可见性/历史的问题/ git log -S

Git / Github - problem with commit visibility / history / git log -S

我在使用 git 时遇到了一个很奇怪的问题。
当我使用命令时:
git show {number of commit}
它向我展示了我所做的提交,在这个提交中,我可以清楚地看到我使用了“boolToString”函数。 With 适用于提交已存在。但是当我使用
git log -S boolToString {path to file}
它没有找到此更改的提交。文件的路径是正确的,因为如果我输入一些在我提交之前就存在的短语,它就会返回结果。你们中有人遇到过与我类似的问题吗?对于正在发生的事情的任何提示或想法,我将非常感激。

您可以尝试 git log --all -S boolToString {path to file}。如果 git 树中有分支,您会发现它们在常规 git log 输出中丢失。

我认为最有可能的

我怀疑历史简化:

git log -S boolToString {path to file}

任何时候您 运行 git log [options] [--] pathgit log 打开历史记录简化。这种简化的目的是解释为什么你的文件看起来像现在这样 这意味着如果你想弄清楚的是为什么你添加了一行,前段时间,已经丢失,您可能会得到 无输出。当您添加的行在 git merge 操作期间被 删除 时会发生这种情况。

(我认为这没有达到解释文件为什么是现在这个样子的目的,但它就是它的样子。)

要查找从文件中删除该行的合并,请使用:

git log -S boolToString --full-history -m -- path/to/file

--full-history 选项关闭历史简化,-m 使 Git 检查合并提交,以便您可以看到该行消失。

不太可能,但有可能

-S 选项查找更改某些字符串的出现次数 的提交。即:

git log -S boolToString

将显示 boolToString+ 行中的提交,该行未被相应的 - 行平衡,在 diff 输出中,反之亦然。例如,如果您要查找将 参数之一 更改为 boolToString 的位置,您需要 git log -G 而不是 git log -S.