以下是几分钟前发生在我身上的事情的简短复述。
一切都很好。我现在找到密码了。我只是想知道我可能做错了什么来达到这种情况。我想从中吸取教训,这样以后就可以避免了。
FWIW:我最近一直在做一些调整。我通常不这样操作,我怀疑答案可能在于一些不良的回扣。我们拭目以待。
发现
所以我刚换了一个分支,我记得在其中执行了一些提交。实际上,head commit包含了我想要的更改。但是我的改变不在那里!
相反,只有一些变化。:。(
经过仔细检查,我发现剩下的变化只是删除。我和你一样认为,我可能在调用commit之前没有添加所有更改,这是我自己的错。
更新:原始提交应该包含一些添加、删除和修改的文件。这个新的“rebased”提交似乎只删除了我所期望的内容。
调查
我最近丢了一个我认为不再需要的藏物。也许我的变化在里面?
我发现了this SO question这解释了我如何使用…
gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )
我设法找到了在同一秒创建的同一提交(即具有相同提交消息)的几个版本。
我认为这是可以理解的,因为它们很可能是在一个或多个rebase操作期间生成的副本,并且很可能已经给定了原始提交日期。
那么这怎么可能呢?
有趣的是:
其中一个与其他人不同。其中一个提交了我丢失的所有数据。
所以我的问题是…我是怎么做到的?我是否在某种程度上使一半的可用数据落后?
有什么线索/理论吗?
更新:
我在评论中被问到我采取了什么步骤来达到目的。
问题的关键是这一点。
在描述匹配但内容不匹配的情况下,如何创建提交的两个或多个副本?
我可以对我可能用过的作品提出一些建议,但就是这样。
我做了一些简单的调整。我去了一家分行,执行了:
git rebase master
我也做了进一步的调查,发现正确的行为确实是最早的。我用gitk查过了,作者旁边的日期总是昨天11:50:35。还有一个日期(提交日期)似乎与以后的折扣一致,但我发誓我只使用…
git rebase master
…从给定的源分支
最佳答案
撇开我和其他人的吹毛求疵,你的问题,我认为这相当于(我说这话时没有恶意)“我在哪里,我是怎么来的?”实际上是非常合理的,并且在学习使用git时会出现很多问题(甚至对于有经验的git用户,有时也是如此)。它是:
git reflog
如果您可以发布该命令的输出(好吧,前50行左右),更多信息的答案可能会在这个线程中出现。