1

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

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

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

4

2 回答 2

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,要求您拼出整个命名空间名称)。

于 2013-11-13T18:04:59.483 回答
2

那么,让我们采取不同的角度,而不是让你摆脱它。

你可以对一个裸仓库做任何你想做的事情。

  • 要么只是以你想要的方式操作文件,要么是困难的方式
  • 或者通过设置GIT_DIR和使用 pure-repo 命令
  • GIT_INDEX_FILE如果您需要本地索引,可能还需要设置
  • GIT_WORK_TREE如果您需要其中之一,可以进行额外设置

有关相关环境变量的一些文档。

于 2013-11-13T18:01:01.290 回答