在使用一个git master
分支作为唯一开发人员多年之后,我正在研究使用其他分支。我的计划是将master
保留为可用于生产的分支,在develop
分支中进行开发,并在开发之外创建功能分支。
大量阅读后,我创建了一个分支(从我的主分支开始),称为develop:
git checkout -b develop
然后我在开发中创建了一个功能分支:
git checkout -b my-feature
然后我在my-feature
分支中修改了一个文件,并按如下所示切换回develop
:
git checkout develop
问题在于,当我查看在功能分支中更改的文件时,更改仍然可见。为什么呢?我在开发部门!
答案 0 :(得分:2)
Git分支是指向提交的指针。
您没有提交更改,因此它们不在任何分支中,而仅在您的工作树中。
当它将另一个分支检出时,Git会保留工作树中存在的更改,除非它们与新旧分支之间的差异冲突。
documentation of git checkout
明确提到:
git checkout
<branch>
[...]
保留对工作树中文件的本地修改,以便可以将其提交到
<branch>
。
详细了解git checkout
。
答案 1 :(得分:0)
更改(即已修改的文件,除非已隐藏或提交)会在您更改分支时转移。
答案 2 :(得分:0)
感谢有用的建议。在切换到开发之前,我实际上确实提交了功能分支。我应该在原始帖子中提到过。
问题是PhpStorm无法正确刷新。我按下了“同步”按钮,现在在分支之间移动时似乎可以正确检测到更改。