考虑以下命令:
# 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 的工作目录副本被修改,它是 取而代之的是回购。
这是不一致的行为吗?如果没有,什么是心理模型"使用它解释了吗?
答案 0 :(得分:3)
一般的心智模型是未分阶段的更改是单独的,并且在签出不同的提交时更新工作副本中的所有其他内容。或者正如docs所说的那样:
git checkout <branch>
要准备处理
<branch>
,请通过更新工作树中的索引和文件,并将HEAD指向分支来切换到它。保留对工作树中文件的本地修改,以便将它们提交到<branch>
。
这与您观察到的两种情况一致。