請考慮以下問題,我在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命令 –