我想从master创建一个本地分支,将内容提交到其中,然后将更改推送到新创建的分支。我就是这么做的:
string branchname="jodel";
string _repoPath="C:\\gitstuff";
var _author=new Signatur("bot","@bot", DataTimeOffset.Now);
// Clone Repository
Repository.Clone(_settings.Config.Git.Url, _repoPath, new CloneOptions { BranchName="master"});
// Create Branch:
var repo=new Repository(_repoPath);
Remote remote = repo.Network.Remotes["origin"];
var localBranch = repo.CreateBranch(branchname);
repo.Branches.Update(localBranch,
b => b.Remote = remote.Name,
b => b.UpstreamBranch = localBranch.CanonicalName);
// Commit
// Create dummy file:
File.WriteAllText(_repoPath + "/" +Guid.NewGuid().ToString()+".txt", "Hallo, Welt");
// Add to Index:
var status=repo.RetrieveStatus();
foreach (var file in status.Untracked) repo.Index.Add(file.FilePath);
repo.Index.Write();
// do Commit
repo.Commit("hi there", _author, _author);
// Push
var pushOptions=new PushOptions { CredentialsProvider=...};
repo.Network.Push(repo.Branches[branchname],options)
发生的情况如下:
克隆成功。创建该分支也可以。将该分支推送到远程存储库也是可行的。但是:提交不是发生在我创建的分支上,而是发生在我一开始克隆的主分支上。
所以我所缺少的只是以下其中一个:
-
如何将我创建的分支设置为“活动”
或者
-
如何通知Commit使用哪个分支
lib2gitsharp中的任何示例/docs,甚至intellisense都没有给我任何提示