有十几个类似的问题,每个人都发布了很长的答案,试图与提问者谈谈。
在这种情况下是否可以创建分支?
我不想克隆repo,只是为了让我可以在该副本的工作目录中创建一个分支,推送它,然后再删除整个东西。创建此分支的脚本(在检查它是否存在之后)已经可以访问Gitolite中的裸仓库并可以直接发出命令。 “git checkout”抱怨操作必须在工作树中执行。
答案 0 :(得分:3)
你可以在一个简单的回购中稍微降低一点。
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
)要求您拼出整个名称空间名称)。
答案 1 :(得分:2)
让我们采取不同的角度,而不是说出来。
你可以将你想要的任何东西带到一个裸仓库。
GIT_DIR
并使用pure-repo命令GIT_INDEX_FILE
GIT_WORK_TREE