了解更多信息。我已经将私有存储库克隆到本地驱动器中。 更多背景信息。这是一个我试图实现的 Web 应用程序,用户可以从 git 存储库的本地克隆文件夹下载不同的文件。因此,每次有人尝试下载时,我都会尝试获取并拉取本地驱动器中的最新数据。
var path = "my local drive path";
using (var repo = new Repository(path))
{
FetchOptions options = new FetchOptions();
options.CredentialsProvider = new CredentialsHandler((url, usernameFromUrl, types) =>
new UsernamePasswordCredentials()
{
Username="[email protected]",
Password = "mypassword"
});
foreach (Remote remote in repo.Network.Remotes)
{
IEnumerable<string> refSpecs = remote.FetchRefSpecs.Select(x => x.Specification);
Commands.Fetch(repo, remote.Name, refSpecs, options, logMessage);
}
}
//Console.WriteLine(logMessage);
using (var repo = new Repository(path))
{
// Credential information to fetch
LibGit2Sharp.PullOptions options = new LibGit2Sharp.PullOptions();
options.FetchOptions = new FetchOptions();
options.FetchOptions.CredentialsProvider = new CredentialsHandler(
(url, usernameFromUrl, types) =>
new UsernamePasswordCredentials()
{
Username = "[email protected]",
Password = "my password"
});
// User information to create a merge commit
var signature = new LibGit2Sharp.Signature(
new Identity("xxxx", "[email protected]"), DateTimeOffset.Now);
// Pull
Commands.Pull(repo, signature, options);
}
使用我的普通用户名和密码就可以正常工作。但是当我使用我的个人访问令牌代替密码或用户名时,它会抛出错误。 有人可以帮我解决这个问题吗?
CloneOptions co = new CloneOptions();
string gitUser = "gitUser", gitToken = "gitToken";
co.CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials { Username = gitUser, Password = gitToken };
使用 github 对我有用。 只需用 git 令牌代替密码,并仍然包含用户名。 也许您需要提供对您的令牌的正确访问权限?
CloneOptions op = new CloneOptions();
op.FetchOptions.CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials
{
Username = YourUser,
Password = YourToken
};
这在最新版本中也有效,您无法访问“CredentialsProvider”,需要使用“FetchOptions”。