git没有显示代码被删除的位置

时间:2010-05-13 20:10:21

标签: git blame

所以我的任务是替换我们项目因历史兼容性原因所需的一些虚拟代码,但自上次发布以来已经神秘地丢弃了。由于消失的代码让我感到紧张的是其他可能已经丢失但未注意到我一直在挖掘日志,试图找到什么提交删除了一些行。我已经尝试了很多东西,包括“git log -S'add-visit-resource-pcf'”,git blame,甚至git bisect都有一个脚本,只是检查行的存在但是无法精确定位这些线被删除的确切位置。我发现这非常令人困惑,特别是在我重新引入此代码之前,上一个日志条目(由上面的命令获得)是其他人添加代码。

commit 0b0556fa87ff80d0ffcc2b451cca1581289bbc3c
Author: Andrew 
Date:   Thu May 13 10:55:32 2010 -0400

    Re-introduced add-visit-resource-pcf, see PR-65034.

diff --git a/spike/hst/scheduler/defpackage.lisp b/spike/hst/scheduler/defpackage.lisp
index f8e692d..a6f8d38 100644
--- a/spike/hst/scheduler/defpackage.lisp
+++ b/spike/hst/scheduler/defpackage.lisp
@@ -115,6 +115,7 @@
     #:add-to-current-resource-pcf
     #:add-user-package-nickname
     #:add-value-criteria
+    #:add-visit-resource-pcf
     #:add-window-to-gs-params
     #:adjust-derived-resources
     #:adjust-links-candidate-criteria-types

commit 9fb10e25572c537076284a248be1fbf757c1a6e1
Author: Bob 
Date:   Sun Jan 17 18:35:16 2010 -0500

    update-defpackage for Spike 33.1 Delivery

diff --git a/spike/hst/scheduler/defpackage.lisp b/spike/hst/scheduler/defpackage.lisp
index 983666d..47f1a9a 100644
--- a/spike/hst/scheduler/defpackage.lisp
+++ b/spike/hst/scheduler/defpackage.lisp
@@ -118,6 +118,7 @@
     #:add-user-package-nickname
     #:add-value-criteria
     #:add-vars-from-proposal
+    #:add-visit-resource-pcf
     #:add-window-to-gs-params
     #:adjust-derived-resources
     #:adjust-links-candidate-criteria-types

这是我们的一个包定义文件,但相关的源文件反映了类似的东西。有谁知道这里会发生什么,以及如何找到我想要的信息?这不是那么重要,但这种事情让我有点紧张。

1 个答案:

答案 0 :(得分:4)

我怀疑你可能有一个邪恶的合并 - 一个实际改变的合并提交。也许这是解决冲突的一个无辜错误。假设发生了这种情况,让我们看看如何找到它......

git log -Sstring似乎没有正确处理邪恶的合并。 (遗憾的是git log --cc -Sstring并不能说服它正确地查看它们;它只是选择所有合并提交。)

有了这个障碍,我可以想到两个选择:

  • 手动测试合并提交

  • Kludge您自己的log -S:搜索git log --merges -p -cc的输出作为目标线。它应该看起来像-- #:add-visit-resource-pcf,但最快的方式可能只是管道less并搜索add-visit-resource-pcf

故事的寓意当然是邪恶合并被称为邪恶的原因。

顺便说一句,我很惊讶你无法用二等分找到它。我很确定bisect能够将合并提交作为结果。