繁体   English   中英

如何从git存储库中删除有冲突的引用?

[英]How do I remove conflicting reference from git repository?

我目前有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

选项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

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

[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远程仓库的refspec配置的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM