考虑以下情况,我在github上有两个分支: master和dev。我有一个本地存储库,它是远程主服务器的克隆,并且指向远程主服务器,但我希望将它切换到dev分支,以便我所做的任何更改都将提交给dev而不是master。要做到这一点需要采取哪些步骤?我尝试过多种方法,但它们似乎从来没有起作用,它总是致力于掌握。请简单地解释一下,因为我对Git和libgit2sharp还不熟悉,所以我仍然试图把我的头围绕着它。
编辑:我使用libgit2sharp库来发出git命令,而不是Git
发布于 2017-10-05 14:52:38
如果开发分支存在,那么:
git checkout dev如果您的dev分支还不存在,那么您需要创建它,然后用以下方法切换到它:
git checkout -b dev使用libgit2sharp无法执行git checkout -b (据我所知),因此您需要使用CreateBranch创建分支,然后使用Checkout执行分支的签出。
代码将如下所示:
private void GetOrCreateThenCheckoutBranch(string myPath, string branchName)
{
// NOTE: This code is for demo purposes only. It is a bad idea
// to create code that couples multiple functions/actions together
using (var repo = new Repository("path/to/your/repo"))
{
var devBranch = repo.Branches["dev"];
if (branch == null)
{
// Repository returns null object when branch does not exist
// so, create a new, LOCAL branch
repo.CreateBranch("dev"); // Or repo.Branches.Add("dev", "HEAD");
devBranch = repo.Branches["dev"];
// You will need more code _here_ if you want to synchronize/set
// an upstream branch...
}
// Now, checkout the branch
Branch currentBranch = Commands.Checkout(repo , devBranch);
// Do more stuff...
}Git是一个分布式版本控制系统。进行更改时,您正在对存储库的本地副本中的分支进行更改。一旦您在本地进行了更改,您就需要
如果远程分支不允许任何人进行合并,则需要发出拉请求。
发布于 2017-10-06 12:15:24
当您还没有名为dev的本地分支,但您的远程有一个dev分支时,运行git checkout dev将在本地创建一个新的dev分支,设置远程跟踪信息,然后切换到新创建的分支。您可以在LibGit2Sharp中模拟这种行为。
要创建一个本地分支dev来跟踪远程dev分支(refs/remotes/origin/dev),首先定位远程分支:
Branch trackedBranch = repo.Branches["origin/dev"];然后创建一个名为dev的新本地分支,它指向与origin/dev分支相同的提交:
Branch localBranch = repo.CreateBranch("dev", trackedBranch.Tip);然后设置本地分支和远程分支之间的跟踪:
repo.Branches.Update(localBranch, b => b.UpstreamBranch = "refs/heads/dev");最后,切换到新的分支:
LibGit2Sharp.Commands.Checkout(repo, "dev");https://stackoverflow.com/questions/46588604
复制相似问题