如何在Git中的裸仓库上创建分支?

时间:2013-11-13 17:56:30

标签: git git-branch git-bare

有十几个类似的问题,每个人都发布了很长的答案,试图与提问者谈谈。

在这种情况下是否可以创建分支?

我不想克隆repo,只是为了让我可以在该副本的工作目录中创建一个分支,推送它,然后再删除整个东西。创建此分支的脚本(在检查它是否存在之后)已经可以访问Gitolite中的裸仓库并可以直接发出命令。 “git checkout”抱怨操作必须在工作树中执行。

2 个答案:

答案 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

有关the relevant environment variables的一些文档。