为什么Git有时候会让我在切换分支之前把修改隐藏起来,但其他时候它切换得很好呢?

31moq8wy  于 2023-02-17  发布在  Git
关注(0)|答案(2)|浏览(160)

当我正在处理一个带有未提交文件的项目时,有时候我不得不切换到一个新的分支。
有时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

我不明白什么情况下,它会自动切换分支,沿着的变化,而不是让我提交/隐藏我的变化之前切换。
如果我确实收到了这条消息,我要么隐藏/提交我的更改,但我正在努力理解发生这种情况的场景,而不是它只会自动切换分支并带来更改。

fykwrbwg

fykwrbwg1#

这完全取决于HEAD和你要提交的文件是否相同,如果两次提交的文件相同,git checkout 没有问题(并在 checkout 后保持修改后的文件在工作树上的原样)....但是,如果在HEAD和你要去的地方之间至少有一个修改后的文件不相同,这将意味着你将需要做一个3路合并,以便执行你对该文件的更改(3个部分是HEAD、工作树和您要去的地方),所有这些都没有提交的奢侈品...这是不可行的,这就是为什么git拒绝 checkout (除非你强迫它 checkout ),而是让你把修改藏起来。

ctehm74n

ctehm74n2#

当同一个文件在当前分支和您试图切换到的分支上都被修改时,您可能会收到此错误。
error: Your local changes to the following files would be overwritten by checkout
希望这有帮助!

相关问题