请考虑以下问题,我在github上有两个分支:master和dev。我有一个本地存储库,它是克隆的,并指向远程主服务器,但我想将其切换到开发分支,以便我所做的任何更改都将被提交给开发人员而不是主人。需要采取哪些步骤才能做到这一点?我尝试了多种方式,但他们似乎从来没有工作,它总是承诺掌握。请简单解释一下,因为我还是Git和libgit2sharp的新手,所以我仍然试图绕过它。使用libgit2sharp检出远程分支
编辑:我使用的libgit2sharp库发出git的命令,而不是Git的外壳
请考虑以下问题,我在github上有两个分支:master和dev。我有一个本地存储库,它是克隆的,并指向远程主服务器,但我想将其切换到开发分支,以便我所做的任何更改都将被提交给开发人员而不是主人。需要采取哪些步骤才能做到这一点?我尝试了多种方式,但他们似乎从来没有工作,它总是承诺掌握。请简单解释一下,因为我还是Git和libgit2sharp的新手,所以我仍然试图绕过它。使用libgit2sharp检出远程分支
编辑:我使用的libgit2sharp库发出git的命令,而不是Git的外壳
如果那么你的Dev分支存在:
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是一个分布式版本控制系统。当您进行更改时,您正在对存储库本地副本中的分支进行更改。一旦你在本地做出更改,您将需要
如果远程分支不允许任何人进行合并,则需要发出pull request。
如果您还没有命名dev
一个本地分支,但您的远程确实有dev
分支,然后在运行git checkout dev
将在本地创建一个新的dev
分支,成立了远程跟踪信息,然后切换到新创建分支。您可以在LibGit2Sharp中模拟此行为。
要创建一个本地分支dev
跟踪远程dev
分支(refs/remotes/origin/dev
),首先找到远程分支:
Branch trackedBranch = repo.Branches["origin/dev"];
然后创建一个新的本地分支称为dev
指向同一个commit为origin/dev
分支:
Branch localBranch = repo.CreateBranch("dev", trackedBranch.Tip);
然后设置跟踪本地和远程分支机构之间:
repo.Branches.Update(localBranch, b => b.UpstreamBranch = "refs/heads/dev");
最后,切换到新的分支:
LibGit2Sharp.Commands.Checkout(repo, "dev");
嗯,但有一个libgit2sharp相当于结帐-b? –
我的理解(也许是不正确的)是你正在/正在GitHub上的libgit2sharp项目上工作,并且你正在使用git。你使用libgit2sharp来发出git命令吗? – jhenderson2099
是的,我。如果不是很清楚,我很抱歉。我正在使用libgit2sharp发出git命令 –