我需要删除一个远程分支,并找到了这种技术:
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");
答案 0 :(得分:3)
如 documentation 中所述,refspec "指定(哪些)目标将使用哪个源对象更新。 < refspec>的格式参数是可选加metrics
,后跟源对象< src>,后跟冒号+
,后跟目标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
传递应该可以解决问题。