我正在用LibGit2Sharp管理git repos。我有一个裸露的git存储库,是从远程A克隆的。现在,我想从远程B获取所有更改(即所有标头和标签),并执行以下操作:
repository.Network.Fetch("git-url", new[] { "+refs/*:refs/*" })
或git命令行中的等效项(如果我没记错的话):
git fetch "git-url" +refs/*:refs/*
碰巧的是,远程B与A相同,只是不存在两个新提交(该提交位于两个分支头上)。这将导致获取操作删除克隆中的这两个提交,如果从远程B进行克隆,则基本上产生相同的结果。
什么是进行提取的正确refspec(或其他正确方法),以使本地提交保持完整,同时允许从远程B提取新提交呢?我也尝试过,+refs/*:+refs/*
但这会在较早的提交中添加分支标签,同时refs/*:refs/*
也不会获取新的更改。
通常,来自远程存储库的refs/remotes/<remote_name>/...
引用会转到。因此,您可以分隔从不同的远程获取和/或在本地创建的引用。
这就是为什么典型的获取引用映射如下所示的原因: +refs/heads/*:refs/remotes/origin/*
当您选择直接一对一地映射引用时,实际上是为给定的远程回购创建了一个完整的镜像。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句