作为一个git master
分支的唯一开发者多年之后,我正在研究使用其他分支。我的计划是保留master
作为一个生产就绪分支,在develop
分支中进行开发,并在development之外创建特性分支。
经过大量阅读,我创建了一个分支(从我的主分支),称为development:
git checkout -b develop
字符串
然后,我创建了一个关于development的功能分支:
git checkout -b my-feature
型
然后我修改了my-feature
分支中的一个文件,并切换回develop
,如下所示:
git checkout develop
型
问题是,当我在特性分支中查看我更改的文件时,更改仍然可见。为什么会这样呢?我在开发分支!
3条答案
按热度按时间jvidinwx1#
Git分支是指向提交的指针。
您没有提交更改,因此它们不在任何分支中,而只在您的工作树中。
当它 checkout 一个不同的分支时,Git会保留工作树中存在的更改,除非它们与要 checkout 的分支引入的更改冲突。如果它们发生冲突,Git会拒绝切换分支(除非它被
--merge
或--conflict
选项调用,但这不在本问题的范围内)。documentation of
git checkout
明确提到:<branch>
**[...]
对工作树中文件的本地修改会被保留,以便它们可以被提交到
<branch>
。[...]
切换分支时,如果您对当前分支和要切换到的分支之间的一个或多个文件进行了本地修改,则命令拒绝切换分支,以便在上下文中保留您的修改。
阅读更多关于
git checkout
e0bqpujr2#
更改,即修改的文件,除非被隐藏或提交,在您更改您的分支时被转移。
shyt4zoc3#
谢谢你的有益建议。在切换到development之前,我确实把特性分支提交了。我应该在最初的帖子中提到这一点。
问题是PhpStorm没有正确刷新。我点击了同步按钮,现在当我在分支之间移动时,似乎可以正确地检测到更改。