Git checkout不会还原文件

时间:2016-10-04 23:13:06

标签: git git-checkout

在mac上使用git(sierra); git版本2.8.4(Apple Git-73)

git checkout <master>

命令不会还原在另一个分支上进行的文件更改。

这就是我所做的。

cd project_folder
git clone -o origin -b master git@gitlab.corp.xyz.com:prj/PRODUCTION.git
git branch -b new_branch
git checkout new_branch
<make changes to an existing file>
git checkout master

我希望在没有new_branch中所做的更改的情况下看到干净版本的master。但是,当我在分支机构之间切换时,我所做出的改变是继续进行的。

以前(很久以前)这曾经像我期望的那样工作。我错过了什么吗?

我做了相当数量的谷歌&amp; stackoverflow搜索。没有产生我正在寻找的结果。我得到的最接近的结果是,但他们并没有帮助我。 1. https://superuser.com/questions/892847/git-branch-branches-not-different 2. Git branch switching does not change code folder files

1 个答案:

答案 0 :(得分:2)

这是预期的行为,是我在使用Git时通常会看到的行为。来自documentation的git checkout:

  

要准备处理&lt; branch&gt;,请通过更新工作树中的索引和文件,并将HEAD指向分支来切换到它。 保留对工作树中文件的本地修改,以便将它们提交到&lt; branch&gt;。

如果您需要切换分支并且您的工作目录不干净,可以选择以下几种方法:

1)您可以在当前分支上进行临时提交:

git commit -m 'WIP'

我说“临时”,但实际上这就像任何其他提交一样。唯一的区别是,当您返回此分支时,一旦完成任务,您将修改此提交:

git commit --amend -m 'Finished WIP'

2)通过

隐藏更改
git stash

Stashing将创建两个提交,一个用于工作目录,另一个用于舞台。如果您想要恢复这些更改,可以通过以下方式应用这些更改:

git stash apply