当我正在处理一个带有未提交文件的项目时,有时候我不得不切换到一个新的分支。
有时Git会切换到一个新的分支,并将更改与我一起沿着。
$ git checkout development
Switched to branch 'development'
M SomeFile1.py
M SomeFile2.sh
Your branch is up to date with 'origin/development'.
其他时候,它要求我在切换到分支时提交或隐藏我的更改。
$ git checkout development
error: Your local changes to the following files would be overwritten by checkout:
SomeFile1.py
Please commit your changes or stash them before you switch branches.
Aborting
我不明白什么情况下,它会自动切换分支,沿着的变化,而不是让我提交/隐藏我的变化之前切换。
如果我确实收到了这条消息,我要么隐藏/提交我的更改,但我正在努力理解发生这种情况的场景,而不是它只会自动切换分支并带来更改。
2条答案
按热度按时间fykwrbwg1#
这完全取决于
HEAD
和你要提交的文件是否相同,如果两次提交的文件相同,git checkout 没有问题(并在 checkout 后保持修改后的文件在工作树上的原样)....但是,如果在HEAD
和你要去的地方之间至少有一个修改后的文件不相同,这将意味着你将需要做一个3路合并,以便执行你对该文件的更改(3个部分是HEAD
、工作树和您要去的地方),所有这些都没有提交的奢侈品...这是不可行的,这就是为什么git拒绝 checkout (除非你强迫它 checkout ),而是让你把修改藏起来。ctehm74n2#
当同一个文件在当前分支和您试图切换到的分支上都被修改时,您可能会收到此错误。
error: Your local changes to the following files would be overwritten by checkout
希望这有帮助!