Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Libgit2sharp获取远程分支_C#_Git_Libgit2sharp - Fatal编程技术网

C# Libgit2sharp获取远程分支

C# Libgit2sharp获取远程分支,c#,git,libgit2sharp,C#,Git,Libgit2sharp,也许以前问过,但我找不到明确的答案。当我需要用gitlib2sharp列出回购的分支时,我真的需要首先克隆到本地回购吗?这是什么意思?我只想克隆一个特定的分支,就像您对git clone-b branch1所做的那样 现在,我首先需要做一个本地结帐,然后得到分支机构,并从那里做第二轮 我是不是错过了什么(希望如此) 谢谢你的回答 格尔茨, 罗纳德 更新(如需评论): 好的,下面是用例。一家公司提供ssrs报告,我们需要通过TAP进行部署。所以我的想法是通过Git来实现这一点。对于每个更改,让他们

也许以前问过,但我找不到明确的答案。当我需要用gitlib2sharp列出回购的分支时,我真的需要首先克隆到本地回购吗?这是什么意思?我只想克隆一个特定的分支,就像您对git clone-b branch1所做的那样

现在,我首先需要做一个本地结帐,然后得到分支机构,并从那里做第二轮

我是不是错过了什么(希望如此)

谢谢你的回答

格尔茨, 罗纳德

更新(如需评论):
好的,下面是用例。一家公司提供ssrs报告,我们需要通过TAP进行部署。所以我的想法是通过Git来实现这一点。对于每个更改,让他们创建一个分支,在此分支中上载/alter/etc。并在该分支中迭代更改,直到一切正常为止。在迭代中,他们应该能够(重新)在至少T上部署自己。在最后阶段,我们将brnanch合并为master,并在P中(重新)部署master。在Github中,您可以完全“单击”此流,但当然我希望自动化此流,最好让其他人按下按钮,因此他们不需要我来完成此操作。那么,这里最好的编程选择是什么?当他们创建分支并开始在T中部署时,我是否应该创建(克隆)repo,将我的本地repo指向特定的分支,获取文件(.sql和.rdl文件)并执行/上载这些文件?我不知道,当你克隆回购协议时,你克隆了所有的分支。到目前为止已经谢谢你了

如果您想使用libgtk2sharp执行类似于git clone-b branch1的操作,请尝试以下操作:

var exampleRepositoryUrl = "https://github.com/npgsql/npgsql.git";
var exampleDestinationFolder = "branch-hotfix-3.0.8";
var exampleBranchName = "hotfix/3.0.8";

var repositoryClonedPath = Repository.Clone(exampleRepositoryUrl, 
                                            exampleDestinationFolder,
                                            new CloneOptions()
{
    BranchName = exampleBranchName 
});

using (var clonedRepo = new Repository(repositoryClonedPath))
{
    // ...
}
要列出远程分支的名称而不克隆repo,可以使用以下方法:

var branches = Repository.ListRemoteReferences(exampleRepositoryUrl)
                         .Where(elem => elem.IsLocalBranch)
                         .Select(elem => elem.CanonicalName
                                             .Replace("refs/heads/", ""));

仅供参考:
git克隆https://bla/repo.git -b branch1无论如何都会获取所有分支,如果您确实希望仅获取一个分支,而不包含不在该分支内的
comm-ish
,则需要初始化空回购,添加一个源于原始回购的远程跟踪分支,然后对该分支执行签出…@SushiHangover您不能只执行:
git clone吗https://bla/repo.git -b分支1——单分支
。我还没有真正的理由使用它,但是在文档中看起来像是
--single-branch
应该只获取与所需分支相关的提交。@尽管如此,您是正确的,使用
--single-branch
可以工作(取决于git版本,以及浅层克隆(
--depth 1
)甚至最近,如果在服务器上启用克隆单个提交(
upload pack
设置为
true
)…只取决于git版本(客户端和服务器);-)仅供参考:libgit2(因此libgit2sharp)目前不支持浅层克隆。谢谢!我也到了这里,但我需要得到分支机构的友好名称。您可以通过repo对象访问分支集合,但是首先需要repo对象,它是签出的本地磁盘repo。这就是我在检索分支名称时想要避免的。但也许我用错了Git?我更新了我的答案,举了一个例子,列出了远程分支的名称,但没有克隆repo。也许会有帮助。谢谢!这就是我要找的!