结帐后没有任何变化

时间:2019-07-30 07:38:11

标签: git

我使用了以下命令:

git checkout dc8a2c845c615598b2be6a3a0f109f18c44dd836

返回上一次提交,并在提交后暂时丢弃更改,但是更改仍然存在,我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

您要使用什么代替git checkout

如果有一些未提交的更改,则可以使用git stashDocumentation)暂时“存储”它们。要检索它们,请使用git stash applygit stash pop。第一个将应用更改并保存它们,使您可以再次应用它们,而后者将应用它们并将其从存储堆栈中删除。在这两种情况下,您的更改都将作为未分阶段的更改返回。

如果您使用git reset --hard,所做的更改将会丢失,因此请务必小心。

编辑:

为什么git checkout没有按照您的意愿去做:

git checkout dc8a2c845c615598b2be6a3a0f109f18c44dd836将签出给定的提交,即,将当前分支的HEAD指针移至该提交。 las,由于您尚未在分支上进行的更改尚未提交,因此分支HEAD 已经指向该提交!因此,该命令不会更改任何内容,因为您未进行的更改不会受到更改分支HEAD指针的影响。

更详细:git知道三棵树:工作目录,索引和HEAD。有关详细说明,请参见this article about git reset。现在,根据ti its' documentationgit checkout

  

要准备在分支上工作,请通过更新工作树中的索引和文件,并将HEAD指向分支来切换到该分支。 保留对工作树中文件的本地修改

因此,如上所述,索引和工作树中的文件将更新为所提供提交中的状态,分支HEAD将指向该提交,但是局部更改(正是您要摆脱的更改) )保留!

答案 1 :(得分:-2)

git checkout用于更改分支,但不放弃更改,我认为在这种情况下,您可能希望进行git checkout HEAD <file>git reset --hard通讯