在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
答案 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