以下是对几分钟前发生在我身上的事情的简短复述。一切都是好的。我现在找到了代码。我只是想知道我可能做错了什么来达到这种情况。我想从中吸取教训,以便将来再次避免。
FWIW:我最近一直在做一些变基。我通常不这样操作,我怀疑答案可能在于一些糟糕的变基。我们拭目以待。
发现
所以我只是换了一个分支,我记得在其中执行了一些提交。实际上,头部提交是包含我想要的更改的提交。但是我的更改不存在!
相反,只有一些变化存在。:(
经过仔细检查,我发现剩余的更改只是删除。我想就像你可能的那样,我可能没有在调用提交之前添加所有更改,这是我自己的错。
更新:原始提交应该包含一些添加、一些删除和一些修改的文件。这个新的“重新定位”提交似乎只是删除了我所期望的内容。
调查
我最近放下了一个我认为我不再需要的藏匿处。也许我的改变在那里?
我发现了这个 SO question,它解释了我如何使用...识别所有无法访问的提交
gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )
我设法找到在同一秒创建(据称)相同提交(即具有相同提交消息)的多个版本
我认为这是可以理解的,因为它们很可能是在一次或多次 rebase 操作期间生成的副本,并且可能已经给出了原始提交日期。
那么这怎么可能呢?
这就是有趣的地方:
其中一个提交与其他提交不同。其中一个提交包含了我所有丢失的数据。
所以我的问题是……我是怎么做到的?我是否以一种留下一半可用数据的方式重新设置基准?
任何线索\理论?
更新: 我在评论中被问到我采取了哪些步骤到达这里。问题是这就是问题的重点。
我可以做些什么来创建描述匹配但内容不匹配的提交的 2 个或更多副本?
我可以对我可能使用过的作品提出一些建议,但仅此而已。我一直在做一些简单的变基。即我访问了一个分支并执行了:
git rebase master
我还做了一些进一步的调查,发现正确的提交确实是最早的。我用 gitK 看过,作者旁边的日期总是昨天 11:50:35。还有另一个日期(提交日期)似乎与后来的变基重合,但我发誓我只使用过......
git rebase master
...来自给定的源分支