在 mac (sierra) 上使用 git;git 版本 2.8.4 (Apple Git-73)
git checkout <master>
Run Code Online (Sandbox Code Playgroud)
命令不会恢复在另一个分支上所做的文件更改。
这就是我所做的。
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
Run Code Online (Sandbox Code Playgroud)
我期待看到一个干净的 master 版本,而没有在 new_branch 中所做的更改。但是当我在分支之间切换时,我所做的更改会继续进行。
以前(很久以前)这曾经像我预期的那样工作。我错过了什么吗?
我进行了大量的 google 和 stackoverflow 搜索。没有产生我正在寻找的结果。我得到的最接近的结果是,但它们对我没有多大帮助。1. https://superuser.com/questions/892847/git-branch-branches-not-different 2. Git 分支切换不改变代码文件夹文件
这是预期的行为,也是我在使用 Git 时通常看到的情况。来自git checkout 的文档:
要准备在 <branch> 上工作,请通过更新工作树中的索引和文件并将 HEAD 指向分支来切换到它。对工作树中文件的本地修改被保留,以便它们可以提交到<branch>。
如果您需要切换分支并且您的工作目录不干净,这里有几个选项:
1)您可以在当前分支上进行临时提交:
git commit -m 'WIP'
Run Code Online (Sandbox Code Playgroud)
我说的是“临时”,但实际上这就像任何其他提交一样。唯一的区别是,当您返回此分支时,一旦完成任务,您将通过以下方式修改此提交:
git commit --amend -m 'Finished WIP'
Run Code Online (Sandbox Code Playgroud)
2)通过以下方式隐藏您的更改
git stash
Run Code Online (Sandbox Code Playgroud)
存储将创建两项提交,一项用于工作目录,一项用于阶段。当您想要恢复这些更改时,您可以通过以下方式应用这些更改:
git stash apply
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2200 次 |
| 最近记录: |