我从一本名为Ryan Hodson - Ry's Git Tutorial的书中学到了它,它说:
在我们撤消更改之前,我们需要返回主分支。如果我们没有,我们所有的更新都将在一些不存在的分支上。您不应该直接对先前的修订进行更改。
这是什么意思?
在我的情况下,我在master
分支的尖端,我必须恢复到以前的提交
这不是IMO最明确写的段落;但经过几次重读后,我很确定我已经推断出正确的背景来理解它的含义。 (这是我能找到解释这段经文的唯一概念上准确的方式,所以...)
大概如果你一步一步地学习本教程,那么你现在处于“独立的HEAD
状态”。当您直接签出提交时会发生这种情况 - 通常是因为您已经在分支的历史记录中进一步检查了提交。例如,如果你有
A -- B -- C <--(master)
并通过说出类似的东西来检查B
提交
git checkout master^
然后这会让你处于独立的HEAD
状态。你可以把它表示为
A -- B -- C <--(master)
^
(HEAD)
看起来教程会引导您执行此操作来检查更改,现在它确定要撤消更改。
所以它说,如果你不首先结账大师,你再做一次提交,你最终会得到
A -- B -- C <--(master)
\
D
^
(HEAD)
你仍然处于独立的HEAD
状态,并且D
不会被任何参考“可达”。这并不总是错误的(如教程所示),但通常不正确。你必须采取进一步的措施来防止D
被丢弃。
本教程使用“直接对先前版本进行更改”这一短语,但这并不是对您正在进行的操作的准确描述。更准确地说,你通常会避免在分离的HEAD
状态下进行新的更改(但可能是作者发现对于git新手而言,语法过于技巧/混乱)。