一个典型的添加了git worktree add的工作树(无论是用--detached还是其他方式创建的)在主存储库中维护其状态,包括它的HEAD和index。所以问题是:如何创建一个主存储库不“知道”的工作树?工作树应该在自己内部维护它的HEAD和index,但是要引用父存储库来引用提交等等。
git worktree add
--detached
HEAD
index
xwbd5t1u1#
事实证明这其实非常简单,唯一需要的是一个包含以下内容的目录:
.git/HEAD
.git/commondir
.git
现在您可以在这个目录中使用git reset,git checkout等,它将引用原始仓库来获取提交图和所有需要的对象,但原始仓库并不知道这些对象。
git reset
git checkout
1条答案
按热度按时间xwbd5t1u1#
事实证明这其实非常简单,唯一需要的是一个包含以下内容的目录:
.git/HEAD
,包含提交哈希(以换行符终止).git/commondir
,包含从该文件本身到主.git
目录的相对路径(以换行符终止)现在您可以在这个目录中使用
git reset
,git checkout
等,它将引用原始仓库来获取提交图和所有需要的对象,但原始仓库并不知道这些对象。