【问题标题】:Git / Github - problem with commit visibility / history / git log -SGit / Github - 提交可见性/历史/ git log -S的问题
【发布时间】:2021-06-09 15:27:47
【问题描述】:

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

【问题讨论】:

  • 该提交是否是您当前签出分支的一部分(或者更准确地说,在您当前签出提交的历史记录中可访问)?
  • 是的。我只在一个分支'master'上工作。

标签: git github commit git-log


【解决方案1】:

我认为最有可能的情况

我怀疑历史简化:

git log -S boolToString {path to file}

任何时候运行git log [options] [--] path,git log 都会打开历史简化。这种简化的目的是解释为什么您的文件看起来是现在的样子。 ,你可能会得到没有输出。当您在 git merge 操作期间添加的行被删除时,就会发生这种情况。

(我认为这未能达到解释为什么文件现在这样的目标,但事实就是这样。)

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

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

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

不太可能,但可能

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

git log -S boolToString

将显示提交,其中boolToString 在+ 行中没有被相应的- 行平衡,在差异输出中,反之亦然。例如,如果您正在寻找将其中一个参数更改为boolToString 的地方,那么您需要git log -G 而不是git log -S。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的回答,但没有奏效。我仍然看不到负责更改的提交。在“git log”中,我可以看到负责该更改的提交。
    • 该提交是否有与 boolToString 行关联的 change? IE,git diff {commit}^..{commit} 是否表明该特定差异实际上更改了其中包含 boolToString 的行?
    猜你喜欢
    • 2020-12-18
    • 2019-01-30
    • 2019-07-28
    • 2011-10-08
    • 2011-01-19
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 2013-01-23
    相关资源
    最近更新 更多