Git允许使用非分段更改进行分支更改

时间:2011-12-15 20:39:04

标签: git version-control

当我没有为提交(修改过的文件)进行更改时,Git允许我更改分支。

这个地方有配置吗?

编辑:起初我认为这是一个配置,我需要设置为禁止在分支之间进行更改,如果有修改的非暂存文件。但是根据Emily的评论,看来你的提示文件是否在不同分支之间有所不同,而不是提示。

2 个答案:

答案 0 :(得分:130)

如何决定

快速实验显示以下内容。

假设您在分支dev上,并且您已修改foo.txt。如果没有提交,您会尝试查看master。将发生两件事之一。

  1. 如果foo.txtmaster没有提交的提交中dev被修改,则不会在未提交的情况下进行切换,因为{{1}该文件的“新”版本与未分级的更改冲突。

    要“结帐”master,因此需要Git将master更新为foo.txt所拥有的较新版本,从而销毁您的非暂停更改。为了防止你失去工作,它不会改变分支。

  2. 否则,修改已经完成“自”版本master知道,并且您将能够更改分支。 Git不必更新文件,因为master没有关于该文件的新信息。
  3. 对于“呐喊”的变化

    由于上述原因,如果您对一个分支上的文件进行了非分段更改,并且意识到您确实希望将更改提交到另一个分支上,则可能会或可能无法检出另一个分支。

    但是,您可以执行以下操作:

    • master(摘要将显示在git stash save "here's a summary of my changes"
    • git stash list
    • git checkout otherbranch(这是git stash popgit stash apply的组合)

答案 1 :(得分:11)

正如艾米丽所指出的,这是一个特色。如果执行更改需要修改任何具有未分级更改的文件,Git将仅禁止分支更改。如果所有修改过的文件都不会受到分支机构结账的影响,那么git就不会抱怨了。这意味着无论您检查哪个分支,您都可以随时查看上一个分支,您的工作树将与您离开的方式相同。