不需要克隆整个仓库,是否有可能从另一个仓库中挑选出一个提交记录?

4

我的带宽极其有限,因此我想知道是否可能在不克隆另一个存储库的情况下从中获取提交。这两个仓库具有相同的文件结构,但它们根本没有共享历史记录。它们都是彼此独立的,但我仍然希望从其中一个中挑选一个提交到另一个中。

这个可能吗?


2
可能是重复的问题:是否可以从另一个Git存储库中挑选提交? - Tim Biegeleisen
我相信这个问题提供了一种不需要克隆存储库的选项来完成它。 - Tim Biegeleisen
请看这里,fetch 命令会将远程分支拉取到本地,并创建一个名为“remoteBranch”的本地分支。请注意,这个本地分支只是远程分支的一个副本,不应该直接对其进行操作;相反,您应该创建一个适当的本地分支并在其上工作。摘自:https://blog.mikepearce.net/2010/05/18/the-difference-between-git-pull-git-fetch-and-git-clone-and-git-rebase/ - Abhishek Ranjan
当你说“另一个”存储库时,是否意味着第二个远程存储库? - dubes
@dubes 我不是在谈论分支,有另一个设备的内核仓库,我想挑选一些不错的变更,就这样。 - Abhishek Ranjan
显示剩余2条评论
2个回答

4

简短回答:理论上可能,但不容易实现。

从“Retrieve specific commit from a remote Git repository”中,你需要:

  • 拥有git 2.5+的git仓库托管服务器:
    • git config uploadpack.allowReachableSHA1InWant true(在服务器端)
  • 一个浅克隆只获取单个提交(同样是git 2.5+,客户端)

也就是说,你需要初始化一个空的仓库,添加远程原始仓库的url,然后:

git fetch --depth=1 ../testrepo/.git <SHA1>

那只会带来一个提交。

“git repo hosting server” 是指 Git 仓库托管服务器。 - Abhishek Ranjan
1
是的,尽管您打算挑选它们之间的差异,但您需要获取两个提交。 - torek
@AbhishekRanjan 我的意思是你需要在服务器端(远程仓库URL所引用的服务器)上安装正确版本(2.5+)和配置(uploadpack.allowReachableSHA1InWan)的Git。 - VonC
@AbhishekRanjan "git repo hosting server": 这个git是在远程服务器上管理你正在克隆的裸仓库的。 - VonC
哦,在我的情况下,GitHub 是服务器,这样可以行得通吗?@VonC - Abhishek Ranjan
@AbhishekRanjan 我不这么认为:他们那边可能没有激活那个配置。 - VonC

0
你可以从另一个Git仓库获取包含该提交的分支,然后使用git cherry-pick来进行操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接