[英]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
如果要删除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
这是重命名的一种方法,尽管这要花很多时间。 首先,您需要获取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.