You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中配置Bonobo Git远程仓库URL以实现文件推送?

解决Bonobo Git远程仓库推送时的URL配置问题

你遇到的问题很典型——混淆了LibGit2Sharp里远程URL的配置位置,把它错放到了凭据回调的参数里,才导致了Method name expected错误。我来给你理清楚正确的做法:

首先要明确:代码里凭据回调中的url参数是LibGit2Sharp在推送过程中自动传入的远程仓库地址,不需要你手动赋值,你只需要在这个回调里返回正确的用户名密码凭据就行。

那Bonobo仓库的URL该放哪儿?有两种常用方式:

方式一:预先关联本地仓库与远程(推荐)

如果你的本地仓库还没和Bonobo远程仓库关联,先添加远程配置,之后推送就可以直接用远程名(比如origin)来操作:

using (var repo = new Repository("path/to/your/local/repo")) 
{
    // 检查是否已存在名为"origin"的远程,没有就添加
    if (repo.Network.Remotes["origin"] == null)
    {
        repo.Network.Remotes.Add("origin", "http://localhost/Bonobo.git.server/secondRepo.git");
    }

    var pushOptions = new LibGit2Sharp.PushOptions();
    pushOptions.CredentialsProvider = new CredentialsHandler(
        (url, usernameFromUrl, types) => new UsernamePasswordCredentials() 
        { 
            Username = USERNAME, 
            Password = PASSWORD 
        });

    // 推送指定本地分支到远程对应分支
    var targetBranch = repo.Branches[BRANCHNAME];
    repo.Network.Push(targetBranch, pushOptions);
}

方式二:推送时直接指定远程URL

如果不想预先配置远程,也可以用Push的重载方法,直接把Bonobo仓库URL作为参数传入:

using (var repo = new Repository("path/to/your/local/repo")) 
{
    var pushOptions = new LibGit2Sharp.PushOptions();
    pushOptions.CredentialsProvider = new CredentialsHandler(
        (url, usernameFromUrl, types) => new UsernamePasswordCredentials() 
        { 
            Username = USERNAME, 
            Password = PASSWORD 
        });

    var targetBranch = repo.Branches[BRANCHNAME];
    // 直接传入远程仓库URL进行推送
    repo.Network.Push(targetBranch, "http://localhost/Bonobo.git.server/secondRepo.git", pushOptions);
}

简单总结下:你之前的错误是把URL硬塞进了凭据回调的url参数位置,这个参数是系统自动填充的,不能手动赋值。正确的位置要么是本地仓库的远程配置里,要么是Push方法的参数中。

内容的提问来源于stack exchange,提问作者Santosh Jogade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:57:08