Git允许使用未分类的更改进行分支更改

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

有没有这个地方的configuration?

编辑:起初我以为这是一个configuration,我需要设置为不允许更改分支之间如果有修改unstaged文件。 但是通过艾米莉的评论,似乎是提示你是否分支文件不同,不提示否则。

它是如何决定的

一个快速的实验显示如下。

假设你在分支dev ,你已经修改foo.txt 。 没有提交,你试图检查出master 。 两件事情之一会发生。

  1. 如果foo.txtdev中没有提交的提交时在master被修改,那么您将不允许在没有提交的情况下进行切换,因为master有一个与未分离的更改冲突的“新”版本的文件。

    因此,要“检出” master ,需要Git将foo.txt更新为主版本所具有的新版本,从而破坏未分离的更改。 为了防止你失去工作,它不会改变分支机构。

  2. 否则,修改已经完成,因为版本master知道,因此您可以更改分支。 Git不必更新文件,因为master文件没有关于文件的新信息。

对于“哎呀”的变化

由于上述原因,如果您在一个分支上的文件发生更改,并意识到您实际上想要在另一个分支上提交更改,您可能会或可能无法检出另一个分支。

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

  • git stash save "here's a summary of my changes"摘要git stash save "here's a summary of my changes" (总结将显示在git stash list
  • git checkout otherbranch
  • git stash pop (这是一个混合git stash applygit stash drop

正如Emily所指出的,这是一个特征。 如果执行更改,Git将只禁止分支更改,需要修改任何具有未分离更改的文件。 如果所有修改后的文件都不会被分支签出,那么git根本就不会抱怨。 这意味着无论您检查哪个分支,都可以检查以前的分支,并且您的工作树将与您离开它的方式相同。