git从散列创建分支而不提取

问题描述

我正在编写一些用于管理发布的 git 命令脚本。如果使用远程服务器上的哈希在远程服务器上创建一个分支,我想做的一件事。但我想运行它而不必获取整个树的开销。我从 git ls-remote <url> 获取哈希,然后我想通过类似 git push <url> <hash>:refs/heads/release/1.0.0 的东西推送到远程,但为了使其工作,我需要初始化一个存储库,然后获取哈希。

我希望有一种比必须先获取更直接的方法。我应该注意到,我希望通过初始化一个裸仓库来优化额外的步骤,然后使用 depth=1 进行浅提取

解决方法

除了极少数命令 git 仅适用于本地存储库;有限的子命令集是:clonefetchpullpushls-remote

因此要使用远程存储库,您有 3 个选择:

  1. 使用远程主机提供的外git API。示例是 Github/Gitlab API。

  2. 使用 ssh 连接到远程主机并直接在服务器上使用本地远程存储库。

  3. 本地克隆; fetch 刚好足以创建和推送一个分支。

列表的结尾。

,

如果该存储库是您的,只需在那里创建分支:这样做的方法是登录服务器并创建分支。

如果不是您的,则推送普通更新:您无法绕过对推送到不属于您的存储库的内容的检查。 “您的”的定义是,您可以登录到服务器并使用本地 git 命令,例如创建任意分支。

是的,我基本上是在回应 what @phd said

编辑:一个补充:获取完成你要求的任务所需的绝对最低限度,做你的克隆 -n --filter=tree:0 --depth 1 --no-single-branch,然后你可以将引用添加到现有提交并以 99+% 的折扣推送它们(在我的测试)关于获取成本。