代码之家  ›  专栏  ›  技术社区  ›  Ole Albers

如何使用LibGit2Sharp设置活动分支?

  •  0
  • Ole Albers  · 技术社区  · 2 年前

    我想从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都没有给我任何提示

    0 回复  |  直到 2 年前
        1
  •  1
  •   Vlad DX    2 年前

    当您在命令行中本地使用git时:创建分支后,您需要将其检出。

    $git结账-b iss53

    切换到新的分支“iss53”

    这是以下内容的简写:

    $git分行iss53

    $git结账iss53

    https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging


    因此,在代码中创建分支后,您需要运行 Checkout 命令

    Commands.Checkout(repo, localBranch);
    

    https://github.com/libgit2/libgit2sharp/wiki/git-checkout

    推荐文章