我正在使用版本0.19 我有一个名为'dev'的远程分支
克隆后我想切换到这个分支。 我找到了一些代码来执行分支更新。但对我来说它不起作用。 我也尝试在此之后运行结帐,但也无效。
在代码之后查看git日志时,我会看到主分支的变更集。但是本地分支名称是已创建分支的名称(例如“dev”)
我做错了什么?
private static Branch SwitchBranch(Repository repo, RepositoryProperties properties)
{
string branchname = properties.Branch;
Branch result = null;
if (!string.IsNullOrWhiteSpace(properties.Branch))
{
Branch remote = null;
foreach (var branch in repo.Branches)
{
if (string.Equals(branch.Name, "origin/" + branchname))
{
remote = branch;
break;
}
}
string localBranchName = properties.Branch;
Branch localbranch = repo.CreateBranch(localBranchName);
Branch updatedBranch = repo.Branches.Update(localbranch,
b =>
{
b.TrackedBranch = remote.CanonicalName;
});
repo.Checkout(updatedBranch);
result = updatedBranch;
}
return result;
}
答案 0 :(得分:4)
您正在使用的CreateBranch()
重载的xml文档状态“创建具有指定名称的分支。此分支将指向Repository.Head
指向的提交”
从您的问题来看,您似乎希望此分支也指向与远程跟踪相同的提交。
因此,我建议您按如下方式更改代码:
Branch localbranch = repo.CreateBranch(localBranchName, remote.Tip);
答案 1 :(得分:0)
请注意,您只能创建一次本地分支。因此,您第二次会收到错误。至少,我做到了。
Branch localbranch = repo.Branches.FirstOrDefault(x => !x.IsRemote && x.FriendlyName.Equals(localBranchName));
if (localbranch == null)
{
localbranch = repo.CreateBranch(localBranchName, remote.Tip);
}
Branch updatedBranch = repo.Branches.Update(localbranch,
b =>
{
b.TrackedBranch = remote.CanonicalName;
});
repo.Checkout(updatedBranch);