在git中切换分支

9
有时我在一个功能分支中,但我做了一个不相关的更改,我想在主分支中看到它。通常我可以这样做:
git checkout master
git commit -m "..." filename

但有时候当我进行检出时,会收到警告说有本地更改,因此我无法切换分支。

为什么这种情况只会有时发生?当我看到这个消息时,是否有解决方法?也许可以使用stash?

2个回答

16

正如Devin Ceartas所提到的,当切换分支会更改您已经在本地更改的某些文件时,就会发生这种情况。(如果您对一个不会被更改的文件有本地更改,或者添加了既不存在于分支也不存在于主干上的新文件,则Git不会抱怨。)

解决方法有两种:

  1. 使用"git stash"保存您的更改,切换到主干,然后再用"git stash apply"恢复它们。最后提交更改。

  2. 先提交您想要保留在分支上的更改,然后使用"git stash"保存其他更改(如果有的话),切换到主干,然后在主干上使用cherry-pick命令来应用该更改。


5
四种方法:3. 你可以尝试使用 "git checkout -m" 进行三方合并,4. 你可以强制切换(丢失更改)使用 "git checkout -f"。 - Jakub Narębski

0

我也见过这种情况。我认为问题在于当你的本地更改会与其他分支中的某些内容发生更改时(而不是其他分支中没有的新文件),就会出现这种情况。你可以在不同的目录中始终检查其他分支。


你怎样可以检出不同目录下的另一个分支? - Mike Mazur
寻求关于git-new-workdir的帮助,它可以让你创建一个由相同仓库支持的新工作目录。 - Phil
我明白了,这是git git仓库中contrib/workdir目录下的脚本。谢谢! - Mike Mazur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接