[英]delete a reference in pygit2
我正在使用库pygit2在我的项目上实现git模块。 现在,我被这两种情况所阻止:-删除标签而不是推送-删除分支而不是推送
这就是我想要做的:
>>> branch = repo.lookup_branch('origin/1249something', pygit2.GIT_BRANCH_REMOTE)
>>> branch
<_pygit2.Branch object at 0xb7350270>
>>> branch.delete()
>>> branch_to_push = 'refs/remotes/origin/1249something'
>>> pusher = pygit2.Signature('test TESTSSSSSSSS', 'test-test1@site.com')
>>> message = "just test message"
>>> remote_repo = repo.remotes[0]
>>> remote_repo.push(branch_to_push, pusher, message)
这是我得到的结果:
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pygit2/remote.py", line 358, in push
check_error(err)
File "/usr/local/lib/python2.7/dist-packages/pygit2/errors.py", line 56, in check_error
raise GitError(message)
_pygit2.GitError: src refspec 'refs/remotes/origin/1249something' does not match any existing object
名称refs/remotes/origin/1249something
不是分支的名称,而是您对远程分支的外观的本地想法。 假设默认获取refspecs(即您执行了git remote add origin <url>
),则远程分支称为refs/heads/1249something
。 当您查找origin/1249something
,它不是远程服务器上的分支,而是远程跟踪分支,当您上一次运行访origin/1249something
,它充当该分支状态的镜像。
在本地删除远程跟踪分支不会以任何方式影响远程存储库,下次您执行访存操作时,它将再次显示。
如果要从远程删除分支,则需要指定一个refspec来说明。 这是通过提供一个空的本地部分来完成的,在您的情况下,您可以通过提供:refs/heads/1249something
作为要推送的:refs/heads/1249something
来实现。 冒号左边的空白部分表示您要删除右边的引用。
remote = repo.remotes[0]
remote.push(':refs/heads/1249something', pusher, message)
将从远程删除该分支。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.