我刚刚开始围绕git,但对于影响我本地工作区的不同命令感到困惑。根据我的理解,你的git目录是易失性的,因为执行checkout
和pull
之类的命令会在必要时实际更改你机器上git目录中的文件。
如果我在编辑器中打开了一个文件,那么在终端中执行这些命令之一来更改我的工作区,究竟会发生什么?例如,我在一个分支上有一个文件,然后我签出以掌握没有该文件的相同文件,当我尝试在编辑器中保存文件时,我收到错误:The location of the document “blahFile” cannot be determined.
答案 0 :(得分:3)
pull
从远程存储库中获取更改,并尝试将更改合并到当前工作目录中。如果干净地成功,它会使用合并结果创建一个新提交。如果没有,它会中止合并,您必须自己解决冲突(使用git add将文件标记为已解决)。因此,在拉动或隐藏您的工作或将工作提交到另一个分支之前,最好有一个干净的工作目录。
checkout
,如果与路径一起使用,它将覆盖使用所需版本指定的文件(来自先前的提交或索引)。如果使用checkout在分支之间切换或从提交移动到提交,如果工作目录是干净的,它会更改工作目录中的文件和索引以完全匹配您要进行的提交。如果工作目录不干净,它将尝试进行简单的合并而不影响修改的文件。如果失败,它就不会继续。
为了更好地理解,请尝试阅读this tutorial。我觉得它写得很好。