Git refspec 用于从远程获取所有内容但保留本地提交 (LibGit2Sharp)
Git refspec for fetching everything from remote but keep local commits (LibGit2Sharp)
我正在使用 LibGit2Sharp 管理 git 存储库。我有一个 bare git 存储库,从远程 A 克隆。现在我想从远程 B 获取所有更改(即所有头和标签)并这样做:
repository.Network.Fetch("git-url", new[] { "+refs/*:refs/*" })
或 git 命令行中的等效项(如果我没记错的话):
git fetch "git-url" +refs/*:refs/*
然而,碰巧远程 B 与 A 相同,除了不存在两个新提交(哪些提交在两个分支头上)。这会导致获取操作删除克隆中的这两个提交,如果我从远程 B 克隆,基本上会产生相同的结果。
进行提取的正确参考规范(或其他正确方法)是什么,该提取将保持本地提交完好无损,同时允许从远程 B 提取新提交?我也试过 +refs/*:+refs/*
但这会将分支标签添加到旧提交,而 refs/*:refs/*
也不会获取新更改。
通常来自远程存储库的引用会转到 refs/remotes/<remote_name>/...
因此您可以分离引用,从本地创建的不同远程 and/or 获取。
这就是为什么典型的获取参考地图如下所示:+refs/heads/*:refs/remotes/origin/*
当您选择直接一对一映射引用时,您实际上创建了给定远程存储库的完整镜像。
我正在使用 LibGit2Sharp 管理 git 存储库。我有一个 bare git 存储库,从远程 A 克隆。现在我想从远程 B 获取所有更改(即所有头和标签)并这样做:
repository.Network.Fetch("git-url", new[] { "+refs/*:refs/*" })
或 git 命令行中的等效项(如果我没记错的话):
git fetch "git-url" +refs/*:refs/*
然而,碰巧远程 B 与 A 相同,除了不存在两个新提交(哪些提交在两个分支头上)。这会导致获取操作删除克隆中的这两个提交,如果我从远程 B 克隆,基本上会产生相同的结果。
进行提取的正确参考规范(或其他正确方法)是什么,该提取将保持本地提交完好无损,同时允许从远程 B 提取新提交?我也试过 +refs/*:+refs/*
但这会将分支标签添加到旧提交,而 refs/*:refs/*
也不会获取新更改。
通常来自远程存储库的引用会转到 refs/remotes/<remote_name>/...
因此您可以分离引用,从本地创建的不同远程 and/or 获取。
这就是为什么典型的获取参考地图如下所示:+refs/heads/*:refs/remotes/origin/*
当您选择直接一对一映射引用时,您实际上创建了给定远程存储库的完整镜像。