Git允许使用未分类的更改进行分支更改
Git允许我在没有为提交(修改文件)进行更改时更改分支。
有没有这个地方的configuration?
编辑:起初我以为这是一个configuration,我需要设置为不允许更改分支之间如果有修改unstaged文件。 但是通过艾米莉的评论,似乎是提示你是否分支文件不同,不提示否则。
它是如何决定的
一个快速的实验显示如下。
假设你在分支dev
,你已经修改foo.txt
。 没有提交,你试图检查出master
。 两件事情之一会发生。
-
如果
foo.txt
在dev
中没有提交的提交时在master
被修改,那么您将不允许在没有提交的情况下进行切换,因为master
有一个与未分离的更改冲突的“新”版本的文件。因此,要“检出”
master
,需要Git将foo.txt
更新为主版本所具有的新版本,从而破坏未分离的更改。 为了防止你失去工作,它不会改变分支机构。 - 否则,修改已经完成,因为版本
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 apply
和git stash drop
)
正如Emily所指出的,这是一个特征。 如果执行更改,Git将只禁止分支更改,需要修改任何具有未分离更改的文件。 如果所有修改后的文件都不会被分支签出,那么git根本就不会抱怨。 这意味着无论您检查哪个分支,都可以检查以前的分支,并且您的工作树将与您离开它的方式相同。