簡體   English   中英

刪除pygit2中的引用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM