我从一本叫Ryan Hodson - Ry的Git教程的书中学到了它,它说:
在撤消更改之前,我们需要返回主分支。如果我们没有,我们所有的更新都将在一些不存在的分支上。您不应该直接对以前的修订版进行更改。
这是什么意思?
在我的情况下,我在master
分支的顶端,我必须恢复到之前的提交
答案 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新手而言,这种措辞太过技术性/混淆)。