删除远程分支

时间:2016-03-03 05:12:39

标签: c# libgit2sharp

我需要删除一个远程分支,并找到了这种技术:

  

git push origin:the_remote_branch

我尝试按以下格式将其传递给Network Push方法,但似乎没有任何效果(options是我的登录凭据):

_repo.Network.Push(_repo.Network.Remotes["origin"], "origin/:NewBranchForDeletion", options)  
_repo.Network.Push(_repo.Network.Remotes["origin"], ":NewBranchForDeletion", options)  
_repo.Network.Push(_repo.Network.Remotes["origin"], ":origin/NewBranchForDeletion", options)
_repo.Network.Push(_repo.Network.Remotes["origin"], ":refs/remotes/:origin/NewBranchForDeletion", options)
_repo.Network.Push(_repo.Network.Remotes["origin"], ":refs/remotes/origin/NewBranchForDeletion", options)
_repo.Network.Push(_repo.Network.Remotes["origin"], "refs/heads/:origin/NewBranchForDeletion", options)
_repo.Network.Push(_repo.Network.Remotes["origin"], "refs/heads/:NewBranchForDeletion", options)

以及其他一些选择。我根本无法工作,它会返回错误,例如(对于":NewBranchForDeletion"方法):

  

不是有效的参考" NewBranchForDeletion"

更新

感谢@Rob在LibGit2Sharp的回购中发现了这条评论:https://github.com/libgit2/libgit2sharp/issues/466#issuecomment-21076975

第一个选项在NullReferenceException上的objectish失败,string.Empty使用objectish会导致上述错误。第二个选项是我正在尝试的,除了我使用的是带有HTTPS验证的版本:

repo.Network.Push(repo.Remotes["my-remote"], objectish: null, destinationSpec: "my-branch");

// Or using a refspec, like you would use with git push...
repo.Network.Push(repo.Remotes["my-remote"], pushRefSpec: ":my-branch");

1 个答案:

答案 0 :(得分:3)

documentation 中所述,refspec &#34;指定(哪些)目标将使用哪个源对象更新。 &lt; refspec&gt;的格式参数是可选加metrics,后跟源对象&lt; src&gt;,后跟冒号+,后跟目标ref&lt; dst&gt;。&#34; < / p>

它还提到&#34;推空&lt; src&gt;允许您删除&lt; dst&gt;来自远程存储库的引用。&#34;

考虑到上述情况,使用:重载并将void Push(Remote remote, string pushRefSpec)作为:refs/heads/branch_to_delete传递应该可以解决问题。