撤消已提交的更改

时间:2017-12-18 19:22:37

标签: git branch git-commit git-revert

我从一本叫Ryan Hodson - Ry的Git教程的书中学到了它,它说:

  

在撤消更改之前,我们需要返回主分支。如果我们没有,我们所有的更新都将在一些不存在的分支上。您不应该直接对以前的修订版进行更改。

这是什么意思?

在我的情况下,我在master分支的顶端,我必须恢复到之前的提交

1 个答案:

答案 0 :(得分:1)

这不是IMO写得最明确的段落;但经过几次重读之后,我很确定我已经推断出正确的背景来理解它的含义。 (这是我能找到解释这段经文的唯一概念上准确的方式,所以......)

如果您一步一步地按照教程进行操作,那么您目前处于"分离HEAD状态"。当您直接签出提交时会发生这种情况 - 通常是因为您已经在分支机构的历史记录中进一步检查了提交。例如,如果你有

A -- B -- C <--(master)

并通过说出

之类的方式检查B提交
git checkout master^

然后这会让你处于分离的HEAD状态。您可以将其表示为

A -- B -- C <--(master)
     ^
    (HEAD)

看起来教程会引导您执行此操作以检查更改,现在它确定要撤消更改。

所以它说如果你首先结帐主人,你再做一次提交,你最终会

A -- B -- C <--(master)
      \
       D 
       ^
       (HEAD)

您仍然处于分离的HEAD状态,而D将无法达到&#34;可以访问&#34;从任何参考。这并不总是错误(如教程所示),但它通常不正确。您必须采取进一步措施防止D被丢弃。

本教程使用短语&#34;直接对先前版本进行更改&#34;但这并不是对您正在做的事情的准确描述。更准确地说,您通常会在处于分离的HEAD状态时避免进行新的更改(但可能是作者发现对于git新手而言,这种措辞太过技术性/混淆)。