2014-04-10 5 views
6

Ich möchte eine Verzweigung auf Git mit libgit2sharp erstellen und löschen. Ich kam mit diesem Code, aber es wirft einen Fehler bei repo.Network.Push(localBranch, pushOptions);Wie benutze ich libgit2sharp um einen neuen Zweig von lokal nach remote zu erstellen?

using (var repo = new Repository(GIT_PATH)) 
{ 
    var branch = repo.CreateBranch(branchName); 

    var localBranch = repo.Branches[branchName]; 

    //repo.Index.Stage(GIT_PATH); 
    repo.Checkout(localBranch); 
    repo.Commit("Commiting at " + DateTime.Now); 

    var pushOptions = new PushOptions() { Credentials = credentials }; 

    repo.Network.Push(localBranch, pushOptions); // error 

    branch = repo.Branches["origin/master"]; 
    repo.Network.Push(branch, pushOptions); 
} 

Die Fehlermeldung ist The branch 'buggy-3' ("refs/heads/buggy-3") that you are trying to push does not track an upstream branch.

ich im Internet diesen Fehler versucht, die Suche aber keine Lösung, die ich gefunden das Problem beheben könnte. Ist es möglich, dies mit libgit2sharp zu tun?

Antwort

14

Sie müssen Ihre lokale Niederlassung mit einer Gegenstelle verbinden, gegen die Sie drücken möchten.

Zum Beispiel eine bereits bestehende "origin" Fern gegeben:

Remote remote = repo.Network.Remotes["origin"]; 

// The local branch "buggy-3" will track a branch also named "buggy-3" 
// in the repository pointed at by "origin" 

repo.Branches.Update(localBranch, 
    b => b.Remote = remote.Name, 
    b => b.UpstreamBranch = localBranch.CanonicalName); 

// Thus Push will know where to push this branch (eg. the remote) 
// and which branch it should target in the target repository 

repo.Network.Push(localBranch, pushOptions); 

// Do some stuff 
.... 

// One can call Push() again without having to configure the branch 
// as everything has already been persisted in the repository config file 
repo.Network.Push(localBranch, pushOptions); 

Hinweis ::Push() macht andere overloads, die es Ihnen ermöglichen, dynamisch, diese Informationen bereitzustellen, ohne sie in der config zu speichern.

+0

Siehe auch diese ** [SO Antwort] (http://stackoverflow.com/a/22617675/335418) **, die Ihnen weitere Details bezüglich der Zweigkonfiguration geben soll – nulltoken

+0

Wo ist der Unterschied zwischen 'localRepo' und 'Repo'? – BendEg

+0

@BendEg Es war ein Fehler. Guter Fang! Fest. – nulltoken

Verwandte Themen