我在 git 服务器中有 2 个分支,分别是 master 和 develop。我使用下面的代码将存储库克隆到我的机器上。
var options =
new CloneOptions()
{
CredentialsProvider = this.credentialsHandler,
};
return
Repository.Clone(
gitHttpUrl,
localPath,
options);
Run Code Online (Sandbox Code Playgroud)
默认分支是 master。我想使用以下代码切换到开发分支。
using (var repo = new Repository(localPath))
{
var branch = repo.Branches[branchName];
repo.Checkout(branch);
}
Run Code Online (Sandbox Code Playgroud)
但分支为空。
如何使用 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 = "test-email@gmail.com";
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);
}
}
Run Code Online (Sandbox Code Playgroud)
与 Git 类似,在克隆时,LibGit2sharp 只会为远程 HEAD 创建本地分支
所有其他分支也将像远程跟踪分支一样被获取和访问,但不会为它们自动创建本地分支。
因此,为了实现您的目标,您可以检查远程跟踪分支(例如origin/master)。请注意,在这种情况下,HEAD 将自动设置为分离模式。
repo.Checkout["origin/my_branch"];
Run Code Online (Sandbox Code Playgroud)
或者,从远程跟踪分支创建一个本地分支,然后检查本地分支。
var branch = repo.CreateBranch("my_branch", "origin/my_branch");
repo.Checkout(branch);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3758 次 |
| 最近记录: |