2
我在git服務器上有兩個分支,都是master和development。我使用下面的代碼將存儲庫克隆到我的機器上。相當於git checkout branch_name在LibGit2Sharp上
var options =
new CloneOptions()
{
CredentialsProvider = this.credentialsHandler,
};
return
Repository.Clone(
gitHttpUrl,
localPath,
options);
默認分支是主設備。我想用下面的代碼切換到開發分支。
using (var repo = new Repository(localPath))
{
var branch = repo.Branches[branchName];
repo.Checkout(branch);
}
但分支爲空。
如何使用LibGit2Sharp切換分支?
更新
默認分支是master
以下是重現該問題的步驟。
- 拉
- 結帳
develop
分支 - 拉,在這裏拋出異常。
這是代碼:
private void Checkout(string localPath, string branchName)
{
using (var repo = new Repository(localPath))
{
var branch = repo.Branches[branchName];
if (branch == null)
{
branch = repo.CreateBranch(branchName, "origin/" + branchName);
}
repo.Checkout(branch);
}
}
private MergeResult Pull(string path)
{
const string NAME = "test-user";
const string EMAIL = "[email protected]";
using (var repo = new Repository(path))
{
var merger =
new Signature(
NAME,
EMAIL,
DateTimeOffset.UtcNow);
var options =
new PullOptions
{
FetchOptions = new FetchOptions()
{
CredentialsProvider = this.credentialsHandler
}
};
return repo.Network.Pull(merger, options);
}
}
repo.CreateBranch方法的第二個參數接受'Commit'或'committish'。我如何傳遞遠程分支名稱? – Anonymous 2014-09-30 11:47:53
'committish'是任何可以指向'commit'的東西。此方法支持** [擴展SHA1語法](https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html)**。因此,傳遞'origin/your_branch_name''將起作用。' – nulltoken 2014-09-30 11:58:19
我更新了我的問題以包含代碼示例。我嘗試傳遞''origin /「+ branchName',但它沒有幫助。 – Anonymous 2014-09-30 12:14:16