Git refspec用于从远程获取所有内容,但保留本地提交(LibGit2Sharp)

行人

我正在用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在没有本地存储库的情况下使用LibGit2Sharp从网络路径获取Git Repo的分支和提交?

使用libgit2sharp从远程下载一个文件(git show)

使用libgit2sharp测试git连接

LibGit2Sharp相当于git diff --stat

如何用libgit2sharp做'git add *'?

libgit2sharp等同于“ git mergetool”

使用libgit2sharp中止git merge

Libgit2sharp:如何使用“ git pull”

LibGit2Sharp获得{Hash}以来的所有提交

Libgit2sharp获取远程分支

git提取到不同的本地远程refspec

如何在LibGit2Sharp中执行git diff --name-status origin / master ... HEAD?

使用LibGit2Sharp抛出企业防火墙背后的Git网络操作

如何找到git commit所在的分支?(使用libgit2sharp)

libgit2sharp可以依赖于已安装的git全局配置提供程序吗?

如何使用libgit2sharp将文件递归添加到master git分支

使用 refspec 防止从远程获取 git 标签

如何获取包含libgit2sharp中的提交的远程分支的列表

如何为我的所有项目仅在本地保留最新的 git 提交?

使用libgit2sharp从远程存储库获取更新

libgit2sharp获取介于(包括)之间的提交

Git checkout <commit>,然后提交并保留所有提交

如何用远程目录(但不是所有 repo)替换 git 本地目录的全部内容?

git - 获取远程文件内容

git checkout -b dev remote_repo / dev不会从远程获取所有提交

Git-重命名具有2个提交推送到远程的本地分支

Git:从远程存储库读取所有提交消息

如何重置远程Git存储库以删除所有提交?

撤消连续提交多个Git,但保留所有更改