撤消已提交的更改

问题描述 投票:0回答:1

我从一本名为Ryan Hodson - Ry's Git Tutorial的书中学到了它,它说:

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

这是什么意思?

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

git branch git-commit git-revert
1个回答
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不会被任何参考“可达”。这并不总是错误的(如教程所示),但通常不正确。你必须采取进一步的措施来防止D被丢弃。

本教程使用“直接对先前版本进行更改”这一短语,但这并不是对您正在进行的操作的准确描述。更准确地说,你通常会避免在分离的HEAD状态下进行新的更改(但可能是作者发现对于git新手而言,语法过于技巧/混乱)。

© www.soinside.com 2019 - 2024. All rights reserved.