我正在使用 LibGit2Sharp 管理 git 存储库。我有一个从远程 A 克隆的裸git 存储库。现在我想从远程 B 获取所有更改(即所有头和标签)并这样做:
repository.Network.Fetch("git-url", new[] { "+refs/*:refs/*" })
或 git 命令行中的等价物(如果我没记错的话):
git fetch "git-url" +refs/*:refs/*
然而,碰巧远程 B 与 A 相同,除了两个新提交不存在(哪些提交在两个分支头上)。这会导致 fetch 操作删除克隆中的这两个提交,如果我从远程 B 克隆,基本上会产生相同的结果。
什么是正确的 refspec(或其他正确的方法)进行获取,以保持本地提交完整,同时允许从远程 B 获取新提交?我也尝试过+refs/*:+refs/*
,但这会将分支标签添加到较旧的提交中,同时refs/*:refs/*
也不会获取新的更改。