有十几个类似的问题,每个人都发布很长的答案,试图说服提问者。
在这种情况下是否可以创建分支?
我不想克隆 repo,只是为了可以在该副本的工作目录中创建一个分支,推送它,然后再次删除整个内容。将创建此分支的脚本(在检查它是否存在之后)已经可以访问 Gitolite 中的裸仓库,并且可以直接发出命令。“git checkout”抱怨必须在工作树中执行操作。
有十几个类似的问题,每个人都发布很长的答案,试图说服提问者。
在这种情况下是否可以创建分支?
我不想克隆 repo,只是为了可以在该副本的工作目录中创建一个分支,推送它,然后再次删除整个内容。将创建此分支的脚本(在检查它是否存在之后)已经可以访问 Gitolite 中的裸仓库,并且可以直接发出命令。“git checkout”抱怨必须在工作树中执行操作。
您可以在一个裸仓库中稍微降低一点。
git branch
愿意在裸仓库中创建一个新分支。只需给它一个提交开始,您就可以创建一个指向现有提交的新分支名称:
cd foo.git
git branch newbranch b6636ec88ba0750aec2706865653eb55031fb892
您还可以使用git update-ref
,它甚至比命名空间还要低,git branch
并且可以在命名空间之外创建引用refs/heads/
:
git update-ref refs/special/ziggy b6636ec88ba0750aec2706865653eb55031fb892
git update-ref -d refs/special/delete
编辑:并且,您可以使用 进行间接引用git symbolic-ref
,例如:
git symbolic-ref MAGIC refs/tags/v1.3
(通常这只会用于创建HEAD
一个不同的间接引用;这里的要点是这个命令,如git update-ref
,要求您拼出整个命名空间名称)。
那么,让我们采取不同的角度,而不是让你摆脱它。
你可以对一个裸仓库做任何你想做的事情。
GIT_DIR
和使用 pure-repo 命令GIT_INDEX_FILE
如果您需要本地索引,可能还需要设置GIT_WORK_TREE
如果您需要其中之一,可以进行额外设置有关相关环境变量的一些文档。