Git" checkout&#34 ;?的行为不一致

时间:2017-11-26 18:05:58

标签: git

考虑以下命令:

# create file myfile.txt
git add myfile.txt
git commit myfile.txt               # sha = SHA1
# modify myfile.txt 
git status  # shows myfile.txt modified

git branch branch2
git checkout branch2                # myfile is not replaced
git status                          # shows myfile.txt modified
git add myfile.txt 
git commit myfile.txt

git checkout master                 # myfile is replaced
git status                          # nothing to commit, working directory clean
# myfile.txt is back to original state SHA1

当check2签出时,myfile.txt的工作目录副本不会被修改。 但是,当签出master时,myfile.txt 的工作目录副本被修改,它是 取而代之的是回购。

这是不一致的行为吗?如果没有,什么是心理模型"使用它解释了吗?

1 个答案:

答案 0 :(得分:3)

一般的心智模型是未分阶段的更改是单独的,并且在签出不同的提交时更新工作副本中的所有其他内容。或者正如docs所说的那样:

  

git checkout <branch>

     

要准备处理<branch>,请通过更新工作树中的索引和文件,并将HEAD指向分支来切换到它。保留对工作树中文件的本地修改,以便将它们提交到<branch>

这与您观察到的两种情况一致。

相关问题