我需要通过自动化在git remote上创建一个新的分支,但是我需要这样做,而不需要先获得可能很大的repos的本地副本。
除非我遗漏某些东西(显而易见或微妙),否则我发现的每个例子都假设我想要抓取'克隆'或者'结帐'当地的回购,然后做一个分支,然后推到原点。
这不是我想要做的。我需要从一个在ubuntu服务器上运行的脚本,我无法负担克隆repos的开销,只需向远程添加一个分支,这样其他人就可以拉下该分支并开始工作。
用例是,我正在使用自动化框架,我们通过在开发人员开始工作之前创建功能分支来实施最佳实践。
通过API可以轻松使用GitHub或GitLab。在某些情况下,我的客户只是使用' git',我必须使用命令行和脚本执行此操作。
我知道这可能含糊不清,如果问题不清楚,请告诉我。
答案 0 :(得分:1)
AFAIK,这是不可能的。但是,我会使用替代解决方案(按升序排列):
如果您的客户的安全策略允许,请为创建新分支的远程计算机制作一些api,例如:带有身份验证的HTTP PUT [*]请求以及新分支的名称作为参数。然后,您可以通过git checkout -b empty
git rm *
git commit -m"create an empty branch"
git push -u origin empty
或您喜欢的语言访问它,而无需使用完整的ssh访问权限。
创建一个空分支,因此即使repo很大,克隆也会非常快。 E.g:
-b
每个回购只需要执行一次。然后,在克隆时,您可以使用git clone -b empty --depth 1 <repo>
开关克隆此分支。 E.g:
--depth
请注意,--single-branch
隐含git checkout -b <new-branch>
。
现在,您可以使用所需名称创建一个新分支:
-f
开发人员完成某项功能后,可以使用git push -f origin <local-branch>:<new-branch>
开关更新新分支:
pre-push
在客户端(即开发者方)使用git hook,这将强制执行最佳做法,例如~\Views\Shared\Discount.ascx
~\Views\Dashboard\Shared\Discount.ascx
。当然,假设你的同事不会忽视它:)
[*]或POST,但由于您提供了分支的名称,因此它应该是幂等的。