【问题标题】:Is there anyway to recover a missing git commit?无论如何要恢复丢失的 git 提交?
【发布时间】:2020-10-02 16:23:05
【问题描述】:

我一直在使用一个超然的头,比我应该允许的要长。我一直很懒惰,推迟合并回到我原来工作的分支,最后决定是时候做我应该做的了。

所以我认为最好的方法是按照我一贯的做法。首先,我获取然后拉下对该分支的最新更改,修复合并冲突,然后将要合并的分支合并到我首先拥有的提交中。 (事后看来,经过更彻底的思考后,我什至不确定我在这里做了什么)。然后我写下了我最近使用所有当前工作所做的提交的提交 ID,然后检查了我将要合并到的分支............那是我的胃痛的时候脚。提交消失了。我尝试在 SourceTree 中搜索 id,但一无所获……我在任何地方都找不到我的工作。

我是否把所有这些工作都搞砸了,还是有什么办法可以把它找回来?.. 我的印象是,一旦 Git 提交了,它就一直在那里,就像一个保存按钮。

【问题讨论】:

  • 检查您的更改是否仍然存在?
  • @leoOrion 他们不是
  • 您签入了您将要合并到的分支,但尚未合并仪式?去你以前的分店看看有没有?
  • @leoOrion 我想我没有清楚地表达这个问题。我没有在分支机构工作。不久前,我合并了一个破坏我的代码的更改。因此,当其他人正在修复这个问题时,我在合并之前检查了提交,只是懒得回到分支。我试图将提交合并到一个分支中。我正在使用 SourceTree 作为 git 的 GUI,它没有显示我在大约 15 分钟前创建的 id 的提交。它显示的最后一次提交是两天前。

标签: git git-commit


【解决方案1】:

对于已在某个时间点提交的所有更改,git 有一个巨大的内置安全网:reflog。

运行:

git reflog

你应该在那里看到你正在寻找的提交。

【讨论】:

  • 我现在正在看这个。有没有办法排序或知道它的排序是如何提交的?我没有看到我马上写下的 id 或提交消息。
  • 我的意思是,如果我看到在此之前存在的 id,那么 id 是否会“消失”?
  • 我一直(愚蠢地)依赖 SourceTree 进行导航。我刚刚在 bash 中尝试了一个简单的“git checkout ”,我想我得救了!我不断被提醒为什么我更喜欢 bash。 SourceTree 对于基本的东西很好,但我总是被赶回 bash。
猜你喜欢
  • 2019-06-15
  • 2015-06-28
  • 1970-01-01
相关资源
最近更新 更多