如果我有本地更改,有时允许 git checkout 实验,有时则不允许

Nic*_*ilt 2 git

我有一个名为实验的分支。

git checkout master
echo 'some changes' > a.txt
# now master branch has local changes which are not committed
git checkout experiment
Run Code Online (Sandbox Code Playgroud)

有时我注意到,如果我进行了本地更改,则不允许我切换到另一个分支。有时,如果我有本地更改,我可以切换到另一个分支。

我缺少什么?

Cas*_*bel 5

git checkout 手册页摘录:

切换分支时,如果您对当前分支与要切换到的分支之间的一个或多个文件进行了本地修改,则该命令将拒绝切换分支,以便在上下文中保留您的修改。

因此,如果修改与分支之间的差异没有任何关系(如您的示例中),它会让您进行切换。如果分支之间的差异修改了您拥有的同一文件,它将拒绝 - 但您可以指定选项-m以使其在当前分支、工作树和新分支之间进行三向合并(这就是该代码片段所在的位置)从)。

为了使描述更完整一点:假设主分支和实验分支之间的差异仅在文件 A、B 和 C 中。如果在工作树中修改 A,您将无法查看其他分支。不过,如果你修改 D,你就可以正常检查了。