9

我使用构建了一个存储库

git clone --mirror <url>

我想删除一些远程分支,但我得到以下信息:

$ git push origin :b
error: --mirror can't be combined with refspecs

... 或者

$ git push --delete b
fatal: --delete doesn't make sense without any refs

此外,git branch -D b不要触摸遥控器。

有没有办法从镜像克隆中删除远程分支,还是我必须为此构建另一个克隆?

4

3 回答 3

4

事实上,您可以删除任何存储库的任何分支,甚至无需克隆它:

git push <url> +:refs/heads/b

唯一需要注意的是,您必须在 git 存储库中,任何存储库 - 您甚至可以创建一个空存储库来执行此操作,然后将其删除。

果然,你也可以在镜子里做,只是注意你只会看到分支在做git remote prune origin.

于 2017-05-06T10:34:49.950 回答
3

如果您使用 --mirror 克隆存储库,您将创建一个裸存储库。这意味着:

" Git 只包含版本控制信息,没有工作文件(没有树),它不包含特殊的 .git 子目录。相反,它直接在主目录中包含 .git 子目录的所有内容本身。”。

克隆中的镜像选项是为了制作当前存储库的“原样”副本,包括注释和外部参考。

话虽如此,您在错误的 repo 上执行此操作,您应该使用原始 repo 进行更改,并且镜像会相应更改。

回答你的问题:

有没有办法从镜像克隆中删除远程分支,还是我必须为此构建另一个克隆?

不是我知道的,除了裸存储库不应该像非裸存储库那样使用。

也许你需要的是一个叉子,也许如果你更好地解释你需要什么。无论如何,自从您提出问题以来,已经过去了一年。

这是一些相关的问题和文档:

于 2014-06-10T13:19:22.833 回答
1

从裸仓库(使用 --mirror 选项克隆存储库),您可以删除镜像仓库中的分支并使用 --mirror 选项推送删除:

$> git clone --mirror <url>
$> git branch -D branch_to_delete_1
$> git branch -D branch_to_delete_2
$> git push --mirror

它允许您一次删除多个分支。

更多信息:https ://git-scm.com/docs/git-push

于 2018-10-05T13:42:12.167 回答