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

git create branch from hash with out fetching

我正在编写一些 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 APIs.

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

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

列表结束。

如果那个 repo 是你的,就在那里创建分支:方法是在服务器上登录并创建分支。

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

是的,我基本上是在附和

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