【问题标题】:How to fix the consequences of wrong reset? [duplicate]如何解决错误重置的后果? [复制]
【发布时间】:2013-07-13 11:33:15
【问题描述】:

情况是这样的。我对我的分支和 origin/master 进行了合并(在图片上提交 80d0e2b),并将我的更改推送到远程服务器。合并似乎很糟糕,我决定申请 git reset HEAD~1 将其从服务器中删除(是的,我很愚蠢)。现在我遇到了一种情况,即无法从任何分支访问某些提交(例如 MOB-25),并且提交 2e4df35 被称为最后一个。

我考虑过将 origin/master 点更改为指向 MOB-25,然后再次应用 fetch 并进行合并。

我还发现这个帖子建议使用 reflog (How can I undo git reset --hard HEAD~1?),但我想 100% 确定。解决这个烂摊子的最好方法是什么?

【问题讨论】:

  • @Andrew Aylett:damluar 希望“100% 确定”它是重复的。 ;) 但是,是的,它是重复的。值得保留这个问题,虽然,这是一个比简洁的原版更好的措辞,虽然原版有更好的答案......

标签: git version-control


【解决方案1】:

您唯一的选择是使用 git reflog 来查找您进行过的 sha1 提交的历史列表...以及您的备份。

一旦你找到你想要的提交,标记或分支它,以便它出现在你的日志中。

哎呀,标记 all 如果您愿意,可以使用不同的标记标记指示“MOB-25”的 reflog 行,并使用 gitk 或您首选的 git 程序查看修订树。当你找到你想要的,随时删除它们。

要查看 reflog:

git reflog

创建标签:

git tag MOB-25a theSha1

创建一个分支:

git branch theSha1 MOB-25a

【讨论】:

  • 你能提供命令吗?
  • @Andrew Aylett:感谢编辑,错过了,抱歉。
  • 所以,我创建了一个指向最后丢失的提交的分支,然后我可以将它与当前提交合并。这样对吗?为什么我们需要标签?
  • 标签仅供参考。随意创建分支,或记住 sha1 或其他任何东西。
猜你喜欢
  • 2018-12-27
  • 1970-01-01
  • 2012-05-14
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
相关资源
最近更新 更多