我有一个叫做实验的分支。
git checkout master
echo 'some changes' > a.txt
# now master branch has local changes which are not committed
git checkout experiment
有时我注意到,如果我有本地更改,我不能切换到另一个分支。如果我有本地更改,有时我可以切换到另一个分支。
我错过了什么?
答案 0 :(得分:4)
git checkout联机帮助页的摘录:
切换分支时,如果对当前分支与要切换的分支之间的一个或多个文件进行本地修改,则该命令拒绝切换分支以保留上下文中的修改。
因此,如果修改与分支之间的差异没有任何关系(如在您的示例中),它将让您切换。如果分支之间的差异修改了您拥有的相同文件,它将拒绝 - 但您可以指定-m
选项以使其在当前分支,工作树和新分支之间进行三向合并(这就是该片段的来源。)
要使描述更完整:假设master和experimental之间的差异仅在文件A,B和C中。如果在工作树中修改A,则无法检出其他分支。但是,如果你修改D,你可以检查一下。
答案 1 :(得分:0)
我不太确定git是如何做到这一点的,但它试图阻止你意外覆盖未提交的更改。如果它决定你可能会发生冲突,那么我认为......