工作目录和工作树不一致
Inconsistency between working directory and working tree
我已经阅读 git 文档一段时间了,并且开始意识到在很多命令中,当涉及到 "working directory" 和 [=20] 之间的区别时,文档是模棱两可的=].我知道状态 here 的变化,并且更频繁使用的命令(如添加)也保持一致。但是我昨天对文档进行了一次 grep 拉取,显示很多命令仍然没有相应更新。
这引出了我的下一个观点,那么每个概念的准确定义是什么,因为它们似乎在配置和存储文档中可以互换使用?工作目录只是一个等待修复的过时错误吗?
上面状态的变化是为了解决混淆并表示状态
给定它的 HEAD 是唯一的每个工作树吗?
如果是这种情况,那么每个工作树的 gc 也是唯一的,还是像 fsck 一样在 "database" 上完成?与 stash 的想法相同,stash 是否关心它被称为什么工作树?
在一般的版本控制系统中(不仅仅是 Git),人们总是需要一个工作的地方。用于此位置的 name 各不相同:工作树、工作树、工作目录等。总的来说,工作树或工作树或某些变体可能是自 "work directory" 以来最好的似乎暗示着 "directory-ness".
的单一水平
Git的名字一直有点不一致,但是使用"work tree"或"working tree"的动作已经相当稳定了。从历史上看,当 git worktree
子命令在 Git 版本 2.5 中正式进入 Git 时,这变得更加重要。
所以,具体来说:
Is [the phrase] working directory [in the git stash
documentation] just an outdated mistake that is waiting to be fixed?
我会这么说,是的。
Was the change in status above made to solve the confusion and denote that status is unique per-working tree given its HEAD?
是的。但是请注意,git status
基于 三个 项目动态计算状态:HEAD
(每个工作树有一个 HEAD
),索引(每个工作树有一个索引)和工作树。
(令人困惑的是,任何命令都可以建立自己的临时索引并使用它。每个工作树的一个索引是该工作的一个"real"索引-树,除了由某些命令临时创建并设置到 $GIT_INDEX_FILE
中的任何临时索引。)
If this is the case, then is gc unique per-working tree too, or is it done on the "database" like fsck?
git gc
在数据库上工作。但是,因为它 删除 未引用的对象,所以这是一个特别复杂的情况:它必须查看 every 索引和 every(可能分离)HEAD
,这意味着它必须遍历所有工作树。
Same idea with stash, does stash care on what working tree it was called?
git stash
所做的是进行两次(有时是三次)提交。它使它们 from 索引和工作树,所以你在哪个工作树中很重要。(第三次提交,如果存在,保存未跟踪的文件:未跟踪但未被忽略,或未被跟踪(包括被忽略)。这些也来自当前工作树。)
提交本身继续 no 分支。相反,默认情况下,其中一个提交(定位其他提交的提交)存储在 refs/stash
中,使用其 reflog 保留任何先前的 refs/stash
值。
我已经阅读 git 文档一段时间了,并且开始意识到在很多命令中,当涉及到 "working directory" 和 [=20] 之间的区别时,文档是模棱两可的=].我知道状态 here 的变化,并且更频繁使用的命令(如添加)也保持一致。但是我昨天对文档进行了一次 grep 拉取,显示很多命令仍然没有相应更新。
这引出了我的下一个观点,那么每个概念的准确定义是什么,因为它们似乎在配置和存储文档中可以互换使用?工作目录只是一个等待修复的过时错误吗?
上面状态的变化是为了解决混淆并表示状态 给定它的 HEAD 是唯一的每个工作树吗?
如果是这种情况,那么每个工作树的 gc 也是唯一的,还是像 fsck 一样在 "database" 上完成?与 stash 的想法相同,stash 是否关心它被称为什么工作树?
在一般的版本控制系统中(不仅仅是 Git),人们总是需要一个工作的地方。用于此位置的 name 各不相同:工作树、工作树、工作目录等。总的来说,工作树或工作树或某些变体可能是自 "work directory" 以来最好的似乎暗示着 "directory-ness".
的单一水平Git的名字一直有点不一致,但是使用"work tree"或"working tree"的动作已经相当稳定了。从历史上看,当 git worktree
子命令在 Git 版本 2.5 中正式进入 Git 时,这变得更加重要。
所以,具体来说:
Is [the phrase] working directory [in the
git stash
documentation] just an outdated mistake that is waiting to be fixed?
我会这么说,是的。
Was the change in status above made to solve the confusion and denote that status is unique per-working tree given its HEAD?
是的。但是请注意,git status
基于 三个 项目动态计算状态:HEAD
(每个工作树有一个 HEAD
),索引(每个工作树有一个索引)和工作树。
(令人困惑的是,任何命令都可以建立自己的临时索引并使用它。每个工作树的一个索引是该工作的一个"real"索引-树,除了由某些命令临时创建并设置到 $GIT_INDEX_FILE
中的任何临时索引。)
If this is the case, then is gc unique per-working tree too, or is it done on the "database" like fsck?
git gc
在数据库上工作。但是,因为它 删除 未引用的对象,所以这是一个特别复杂的情况:它必须查看 every 索引和 every(可能分离)HEAD
,这意味着它必须遍历所有工作树。
Same idea with stash, does stash care on what working tree it was called?
git stash
所做的是进行两次(有时是三次)提交。它使它们 from 索引和工作树,所以你在哪个工作树中很重要。(第三次提交,如果存在,保存未跟踪的文件:未跟踪但未被忽略,或未被跟踪(包括被忽略)。这些也来自当前工作树。)
提交本身继续 no 分支。相反,默认情况下,其中一个提交(定位其他提交的提交)存储在 refs/stash
中,使用其 reflog 保留任何先前的 refs/stash
值。