当我没有为提交(修改过的文件)进行更改时,Git允许我更改分支。
这个地方有配置吗?
编辑:起初我认为这是一个配置,我需要设置为禁止在分支之间进行更改,如果有修改的非暂存文件。但是根据Emily的评论,看来你的提示文件是否在不同分支之间有所不同,而不是提示。
答案 0 :(得分:130)
快速实验显示以下内容。
假设您在分支dev
上,并且您已修改foo.txt
。如果没有提交,您会尝试查看master
。将发生两件事之一。
如果foo.txt
在master
没有提交的提交中dev
被修改,则不会在未提交的情况下进行切换,因为{{1}该文件的“新”版本与未分级的更改冲突。
要“结帐”master
,因此需要Git将master
更新为foo.txt
所拥有的较新版本,从而销毁您的非暂停更改。为了防止你失去工作,它不会改变分支。
master
知道,并且您将能够更改分支。 Git不必更新文件,因为master
没有关于该文件的新信息。由于上述原因,如果您对一个分支上的文件进行了非分段更改,并且意识到您确实希望将更改提交到另一个分支上,则可能会或可能无法检出另一个分支。
但是,您可以执行以下操作:
master
(摘要将显示在git stash save "here's a summary of my changes"
)git stash list
git checkout otherbranch
(这是git stash pop
和git stash apply
的组合)答案 1 :(得分:11)
正如艾米丽所指出的,这是一个特色。如果执行更改需要修改任何具有未分级更改的文件,Git将仅禁止分支更改。如果所有修改过的文件都不会受到分支机构结账的影响,那么git就不会抱怨了。这意味着无论您检查哪个分支,您都可以随时查看上一个分支,您的工作树将与您离开的方式相同。