工作树vs工作目录

时间:2016-08-24 16:23:31

标签: git

我正在阅读Git v2.9.1的release notes,其中一项更改为:

  

“git status”用来表示“工作目录”,意思是“工作树”。

两者有什么区别?什么时候git status意味着“工作树”?

3 个答案:

答案 0 :(得分:18)

这样做是为了提高一致性并避免歧义。正如commit that changed this behavior

中所述
  

工作目录很容易与当前目录混淆。

因此,这项更改是为了更好地消除工作树之间的歧义,这意味着您的存储库已经签出的位置,以及当前工作目录运行git status命令,可能位于工作树下面的某个位置(如果设置GIT_WORK_TREE环境变量,可能不会)。

答案 1 :(得分:5)

意义上存在细微差别。

目录是一个单一的东西 - 一个文件夹,一个文件集合 - 而工作树意味着一个像文件和目录结构的树一样引用。

工作树是指包含.git文件夹的目录,包括所有子目录和文件。

要更全面地理解这一点,你必须了解是谁创建了Git:Linus Torvalds。 Git中的所有内容都与Linux命名约定和思维过程密切相关,其中包括Git"如何思考"关于文件或文件系统:

来自3.1.3. More file system layout

  

为方便起见,Linux文件系统通常被认为是树结构。在标准的Linux系统上,您会发现布局通常遵循以下方案。

     

Linux file system diagram

所以它被称为"工作树"因为Linux内核/文件系统开发人员构建了Git,而在Linux中,文件系统被认为是"树"。

答案 2 :(得分:3)

当前目录

是您当前的文件夹,命令行 ls 列出当前目录中的项目

工作树

是您当前的目录以及其中的所有目录路径,如果是我,我会将其重命名为“工作目录树”,因此术语“树”更适合于目录你头脑中的结构,而不是一个git树结构

工作目录

含糊不清地用于指代这两种情况,不要使用这个词。它让每个人都感到困惑。