Как использовать libgit2sharp для создания новой ветки с локальной на удаленную?

Я хочу создать и удалить ветку на git, используя libgit2sharp. Я придумал этот код, но он выдает ошибку repo.Network.Push(localBranch, pushOptions);

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);
}

Сообщение об ошибке: The branch 'buggy-3' ("refs/heads/buggy-3") that you are trying to push does not track an upstream branch.

Я попытался найти эту ошибку в Интернете, но никакое решение, которое я нашел, не могло решить проблему. Можно ли это сделать с помощью libgit2sharp?


person Anonymous    schedule 10.04.2014    source источник


Ответы (1)


Вы должны связать свою локальную ветку с удаленной, на которую вы хотите нажать.

Например, для уже существующего пульта "origin":

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);

Примечание: Push() открывает другие перегрузки, которые позволяют вам динамически предоставлять такую ​​информацию, не сохраняя ее в конфигурации.

person nulltoken    schedule 10.04.2014
comment
См. также этот ответ SO, который должен предоставить вам дополнительные сведения о конфигурации ветки. - person nulltoken; 10.04.2014
comment
В чем разница между localRepo и repo? - person BendEg; 08.07.2015