首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除pygit2中的引用

删除pygit2中的引用
EN

Stack Overflow用户
提问于 2015-04-13 18:26:23
回答 1查看 285关注 0票数 0

我正在使用库pygit2在我的项目中实现一个git模块。现在我被这两个场景阻塞了:-删除标签而不是推送-删除分支而不是推送

这就是我想要做的:

代码语言:javascript
复制
>>> 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)

这是我得到的结果:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2015-05-17 21:43:58

名称refs/remotes/origin/1249something不是分支的名称,而是您对遥控器分支外观的本地概念。假设有一个默认的fetch refspecs (即,您使用了git remote add origin <url>),远程服务器上的分支称为refs/heads/1249something。当您查找origin/1249something时,它不是遥控器上的分支,而是一个远程跟踪分支,它充当上次运行fetch时该分支状态的镜像。

在本地删除远程跟踪分支不会以任何方式影响远程存储库,下次执行fetch时,它将再次出现。

如果你想从遥控器上删除分支,你需要指定一个refspec来说明这一点。这是通过提供一个空的本地部分来完成的,在你的例子中,你可以通过提供:refs/heads/1249something作为refspec来进行推送。冒号左侧的空白部分表示您希望删除右侧的引用。

代码语言:javascript
复制
remote = repo.remotes[0]
remote.push(':refs/heads/1249something', pusher, message)

将从远程删除该分支。

我建议阅读Working with Remotes以巩固您对远程和远程跟踪分支如何与远程存储库相关的理解。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29603087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档