找到删除行的时间

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

今天早些时候我发现我的git存储库中缺少一些代码。我知道一些丢失的文本,以及它所在的文件,所以我使用了git log -S'missingtext' /path/to/file。然而,唯一回来的是我添加了包含缺失文本的行的提交。HEAD中没有文本,添加它的提交存在于我的分支中,所以我知道我的分支历史中的一个提交必须删除它,但它没有显示出来。

经过一些手动搜索,结果发现在解决合并冲突时意外删除了该行。所以我想知道:

  1. 这是为什么pickaxe找不到删除该行的提交的原因?
  2. 如果不手动挖掘历史记录,我怎么能找到删除“missingtext”的地方?

对#1的任何见解都会很棒(我认为这git log -S会给我答案),但我真正的问题是#2,因为我希望将来可以避免这种情况。

提问于
用户回答回答于

git log默认情况下不会显示合并提交的差异。该-c--cc标志应该做的伎俩:

git log -c -S'missingtext' /path/to/file

用户回答回答于

答案:git blame --reverse START.. file.ext

对于每一行,这将显示该行存在的最后一次提交 - 例如hash 0123456789.下一次提交将是删除它的那一次。使用git log并搜索哈希值0123456789 - 然后是其后继提交。

扫码关注云+社区

领取腾讯云代金券