使用 libgit2sharp 检出远程分支

Ibr*_*fal 0 git commit github libgit2sharp

考虑以下,我在 github 上有两个分支:master 和 dev。我有一个本地存储库,它是一个克隆并指向远程 master,但我想将它切换到 dev 分支,以便我所做的任何更改都将提交给 dev 而不是 master。需要采取哪些步骤才能做到这一点?我尝试了多种方法,但它们似乎从未奏效,并且始终致力于掌握。请简单解释一下,因为我还是 Git 和 libgit2sharp 的新手,所以我仍在努力解决它。

编辑:我使用 libgit2sharp 库来发出 git 命令,而不是 Git shell

Edw*_*son 7

如果您还没有一个本地分支命名dev,但您的远程确实有一个dev分支,然后在运行git checkout dev将创建一个新的dev本地分支,成立了远程跟踪信息,然后切换到新创建的分支。您可以在 LibGit2Sharp 中模拟这种行为。

要创建dev跟踪远程dev分支 ( refs/remotes/origin/dev)的本地分支,首先定位远程分支:

Branch trackedBranch = repo.Branches["origin/dev"];
Run Code Online (Sandbox Code Playgroud)

然后创建一个名为的新本地分支dev,该origin/dev分支指向与该分支相同的提交:

Branch localBranch = repo.CreateBranch("dev", trackedBranch.Tip);
Run Code Online (Sandbox Code Playgroud)

然后设置本地和远程分支之间的跟踪:

repo.Branches.Update(localBranch, b => b.UpstreamBranch = "refs/heads/dev");
Run Code Online (Sandbox Code Playgroud)

最后,切换到新分支:

LibGit2Sharp.Commands.Checkout(repo, "dev");
Run Code Online (Sandbox Code Playgroud)

  • 刚刚测试过。您需要像这样设置远程: repo.Branches.Update(localBranch, b => b.Remote = "origin"); (2认同)