Git:为什么切换分支时工作目录中的文件没有更改?

时间:2018-09-02 08:57:18

标签: git

在使用一个git master分支作为唯一开发人员多年之后,我正在研究使用其他分支。我的计划是将master保留为可用于生产的分支,在develop分支中进行开发,并在开发之外创建功能分支。

大量阅读后,我创建了一个分支(从我的主分支开始),称为develop:

git checkout -b develop

然后我在开发中创建了一个功能分支:

git checkout -b my-feature

然后我在my-feature分支中修改了一个文件,并按如下所示切换回develop

git checkout develop

问题在于,当我查看在功能分支中更改的文件时,更改仍然可见。为什么呢?我在开发部门!

3 个答案:

答案 0 :(得分:2)

Git分支是指向提交的指针。
您没有提交更改,因此它们不在任何分支中,而仅在您的工作树中。

当它将另一个分支检出时,Git会保留工作树中存在的更改,除非它们与新旧分支之间的差异冲突。

documentation of git checkout明确提到:

  

git checkout <branch>

     

[...]

     

保留对工作树中文件的本地修改,以便可以将其提交到<branch>

详细了解git checkout

答案 1 :(得分:0)

更改(即已修改的文件,除非已隐藏或提交)会在您更改分支时转移。

答案 2 :(得分:0)

感谢有用的建议。在切换到开发之前,我实际上确实提交了功能分支。我应该在原始帖子中提到过。

问题是PhpStorm无法正确刷新。我按下了“同步”按钮,现在在分支之间移动时似乎可以正确检测到更改。