2014-04-10 14 views
6

Tôi muốn tạo và xóa một nhánh trên git bằng cách sử dụng libgit2sharp. Tôi đã đưa ra mã này, nhưng nó ném một lỗi ở repo.Network.Push(localBranch, pushOptions);Làm thế nào để sử dụng libgit2sharp để tạo một chi nhánh mới từ địa phương đến từ xa?

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

Các thông báo lỗi là The branch 'buggy-3' ("refs/heads/buggy-3") that you are trying to push does not track an upstream branch.

tôi đã cố gắng tìm kiếm lỗi này trên internet nhưng không có giải pháp mà tôi thấy có thể khắc phục vấn đề. Có thể làm điều này bằng cách sử dụng libgit2sharp?

Trả lời

14

Bạn phải liên kết chi nhánh địa phương với một điều khiển từ xa mà bạn muốn đẩy.

Ví dụ, đưa ra một "origin" từ xa đã có sẵn:

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

Lưu ý ::Push() lộ khác overloads cho phép bạn tự động cung cấp thông tin như vậy mà không lưu trữ nó trong cấu hình.

+0

Xem thêm điều này ** [SO answer] (http://stackoverflow.com/a/22617675/335418) ** sẽ cung cấp cho bạn chi tiết hơn về cấu hình chi nhánh – nulltoken

+0

Sự khác biệt giữa 'localRepo' và 'repo'? – BendEg

+0

@BendEg Đó là một lỗi. Nắm bắt tốt! Đã sửa. – nulltoken

Các vấn đề liên quan