Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何反转git的重新基址?_Git_Version Control_Git Rebase - Fatal编程技术网

如何反转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