我正在阅读Git v2.9.1的发布说明,其中的一个更改内容如下:
“git status”过去在指代“工作区”时会使用“working directory”。
这两者有什么区别?何时会用到git status
指的是“工作区”?
这样做是为了提高一致性并避免歧义。正如在更改此行为的提交中所解释的那样:
工作目录很容易与当前目录混淆。
因此,这个更改是为了更好地区分工作树,即您的存储库已被检出的位置,和工作目录,您正在其中运行git status
命令的位置,该位置可能位于您的工作树下方(或者如果您设置了GIT_WORK_TREE
环境变量,则可能不是这样)。
这里有一个微妙的意义差别。
目录是单一的事物——一个文件夹,一组文件——而 工作树 指的是文件和目录的树形结构,它们共同被引用。
工作树指包含 .git 文件夹的目录,包括所有子目录和文件。
要更完全地理解这个概念,你必须了解谁创建了 Git:Linus Torvalds。Git 中的所有内容都与 Linux 命名约定和思维过程紧密相关,包括 Git 如何“思考”文件或文件系统:
为了方便起见,Linux 文件系统通常被认为是一个树形结构。在标准的 Linux 系统上,你会发现布局通常遵循以下方案。
因此,它被称为“工作树”,因为 Linux 内核/文件系统开发人员构建了 Git,在 Linux 中,文件系统被视为“树形结构”。
当前目录
是你当前文件夹的位置,命令行ls列出当前目录中的所有项目
工作树
是你当前目录和其中所有目录路径的集合。如果是我的话,我会将其重命名为 "工作目录树",这样术语“树”更适用于你脑海中的目录结构,而不是git树形结构。
工作目录
含糊而不确定地用于引用这两种情况,请不要使用此单词,它会让每个人都感到困惑。
pwd
是一个 Unix/Linux(不是 git)命令,意思是“打印当前工作目录”,而在这里使用“工作目录”这个词正是 Linus Torvalds 不希望让 git 用户感到困惑的事情。不幸的是,我们晚了大约50年才想到将其改名为 pcd
。 - LastStar007pwd
是一个 Unix/Linux(不是 git)命令,意思是“打印当前工作目录”,而在这里使用“工作目录”这个词正是 Linus Torvalds 不希望让 git 用户感到困惑的事情。不幸的是,我们晚了大约50年才想到将其改名为 pcd
。 - undefined
git status .
,你实际上得到的是工作目录的状态。如果你运行git status somesubdir
,那么结果既不是关于当前工作目录,也不是关于整个工作树的... - user2404501git-status
提供路径规范,并且它们没有被修改,那么即使工作树的其他部分不干净,它也会显示nothing to commit, working tree clean
。我同意这不是最优的,但比以前也不差。 - Edward Thomson