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