在这种情况下,为什么我的本地Git更改会被结帐覆盖?

Aar*_*ron 5 git version-control merge branch branching-and-merging

假设我有一个分支A,从那里我分支B.我在A上做了一堆修改,然后结账B并做了一个git pull.现在我对B进行了更改但是意识到它应该已经在A中.如果我现在尝试git checkout A,我得到"您对以下文件的本地更改将被"结帐"覆盖到我触摸的文件.

如果我刚刚在B中执行git pull并且之后没有在A中触及该文件,为什么我的更改会被覆盖?

Gre*_*ill 9

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

实现这些变化的一种方法是存储它们:

(on branch B)$ git stash
git checkout A
git stash pop
Run Code Online (Sandbox Code Playgroud)

如果存在冲突的更改,则可能必须在此时解决冲突.如果有变化但它们没有冲突,那么这将成功.

  • 您可以使用`git diff AB file.txt`来查看Git认为分支`A`上的`file.txt`和分支`B`上的`file.txt`之间存在差异. (2认同)