2

我目前有 2 个名称为 master 的符号引用,如下所示

git ls-remote git@github.com:company/project.git master
9547e4ba01d67e1ff3xxxxxd5110eaaf2f48    refs/for/master
06106b7f1005dbb9f1xxxxxxxx456d2be84346c refs/heads/master

如何删除或重命名 refs/for/master,以便 ls-remote 命令只给出一个结果,如下所示 -

git ls-remote git@github.com:company/project.git master
06106b7f1005dbb9f1xxxxxxxx456d2be84346c refs/heads/master
4

1 回答 1

3

选项 1:删除参考

如果要删除refs/for/master引用,只需从远程删除它(使用以下方法之一):

git push git@github.com:company/project.git :refs/for/master
git push git@github.com:company/project.git --delete for/master

选项 2:重命名参考

这是您可以重命名它的一种方法,尽管它的工作量要大得多。首先,您需要获取refs/for/master引用的对象。我知道如何编辑您的回购.git/config以获取它的唯一方法。

为方便起见,假设您将git@github.com:company/project.git远程调用添加origin到本地存储库:

git remote add origin git@github.com:company/project.git

然后假设您fetch在本地克隆的.git/config文件中将配置设置为以下内容:

[remote "origin"]
    url = git@github.com:company/project.git
    fetch = refs/for/*:refs/remotes/origin/for/*

然后一旦你git fetch origin,你可以将引用重命名为其他东西并再次推送它(你仍然需要删除旧的引用):

git push origin :refs/for/master origin/for/master:for/master

:refs/for/master删除旧引用,origin/for/master:for/master并将该引用的旧副本推送为新的远程引用for/master

您可以在第 9.5 章 Git Internals -免费在线 Pro Git 书籍的 Refspec中阅读有关fetch远程 repos 的 refspec 配置的更多信息。

于 2013-08-14T02:44:32.250 回答