如何反转git的重新基址?
我知道最简单的方法是调用如何反转git的重新基址?,git,version-control,git-rebase,Git,Version Control,Git Rebase,我知道最简单的方法是调用git reflog查找分支的原始头,然后调用git reset进行旧提交 但在某些情况下,reflog不可用,例如在另一台PC的存储库中 有什么方法可以反转git重基并设置为旧提交?我不确定我是否理解您的问题。如果我理解正确的话,您对回购协议进行了一些修改,编辑了历史记录,推送、拉送了另一个存储库,并希望从那里撤消历史记录编辑? 这是不可能的,因为你没有“原始”的历史 正如您所说的,git reflog是一条可行之路,我不知道您为什么不能使用它(除了我刚才概述的场景)。
git reflog
查找分支的原始头,然后调用git reset
进行旧提交
但在某些情况下,reflog不可用,例如在另一台PC的存储库中
有什么方法可以反转git重基并设置为旧提交?我不确定我是否理解您的问题。如果我理解正确的话,您对回购协议进行了一些修改,编辑了历史记录,推送、拉送了另一个存储库,并希望从那里撤消历史记录编辑? 这是不可能的,因为你没有“原始”的历史
正如您所说的,
git reflog
是一条可行之路,我不知道您为什么不能使用它(除了我刚才概述的场景)。你能编辑你的帖子来提供更多信息吗?我不确定我是否理解你的问题。如果我理解正确的话,您对回购协议进行了一些修改,编辑了历史记录,推送、拉送了另一个存储库,并希望从那里撤消历史记录编辑?
这是不可能的,因为你没有“原始”的历史
正如您所说的,
git reflog
是一条可行之路,我不知道您为什么不能使用它(除了我刚才概述的场景)。你能编辑你的帖子来提供更多信息吗?当你重新设置基址时,你正在重写历史记录。分支将指向不同的提交。旧的承诺被放弃了。您可以通过git fsck--lost-found列出它们并尝试恢复。但是,它们可用于垃圾收集,因此如果您不久前已经这样做了,它们可能会无法恢复地丢失。当您重新设置基址时,您正在重写历史记录。分支将指向不同的提交。旧的承诺被放弃了。您可以通过git fsck--lost-found列出它们并尝试恢复。但是,它们可用于垃圾收集,因此如果您不久前已经这样做了,它们可能会无法恢复地丢失。只需使用(ref)ORIG_HEAD,它被设置为指向重新基址内部重置阶段之前的分支尖端。-见
所以checkout ORIG_HEAD
,为它创建一个新的分支名称(停止它是一个分离的头),你应该在路上了(检查它是否与gitk
或你的favoutite漂亮的单线图命令连接)只需使用(ref)ORIG_HEAD,设置为在重新基准的内部重置阶段之前的分支尖端处。-见
所以
checkout ORIG_HEAD
,为它创建一个新的分支名称(停止它是一个分离的HEAD),你应该在路上了(检查它是否与gitk
或你的favoutite漂亮的单线图命令连接)在这种情况下,没有办法自动“撤消”重基,但你可以手动执行另一个重基。例如,如果您有:
A---B---C <-- master
\
D---E---F <-- feature
在这种情况下,无法自动“撤消”重基,但可以手动执行另一个重基。例如,如果您有:
A---B---C <-- master
\
D---E---F <-- feature
git checkout -b feature
git rebase --onto A C feature
git checkout master
git reset --hard C