为什么在这种情况下,我在Git中的本地更改会被签出覆盖



假设我有一个分支a,并从中分支B。我对a进行了一系列更改,然后签出B并执行git pull。现在我在B上做了一个更改,但意识到它应该在a中。如果我现在尝试git checkout A,我会对我触摸的文件得到"您对以下文件的本地更改将被签出覆盖"。

如果我只是在B中进行了一次git拉取,并且从那以后就没有在a中接触过那个文件,为什么我的更改会被覆盖?

收到该消息的原因是分支A和分支B之间的底层文件(在未提交的修改之前)不同。如果文件相同,Git将切换分支,并在切换到分支A后保持相同的未提交修改。

实现这些变化的一种方法是隐藏它们:

(on branch B)$ git stash
git checkout A
git stash pop

如果有冲突的更改,此时可能必须解决冲突。如果有变化但没有冲突,那么这将成功。

最新更新