git只创建远程分支(没有本地)

时间:2016-02-23 14:42:08

标签: git bash

我需要通过自动化在git remote上创建一个新的分支,但是我需要这样做,而不需要先获得可能很大的repos的本地副本。

除非我遗漏某些东西(显而易见或微妙),否则我发现的每个例子都假设我想要抓取'克隆'或者'结帐'当地的回购,然后做一个分支,然后推到原点。

这不是我想要做的。我需要从一个在ubuntu服务器上运行的脚本,我无法负担克隆repos的开销,只需向远程添加一个分支,这样其他人就可以拉下该分支并开始工作。

用例是,我正在使用自动化框架,我们通过在开发人员开始工作之前创建功能分支来实施最佳实践。

通过API可以轻松使用GitHub或GitLab。在某些情况下,我的客户只是使用' git',我必须使用命令行和脚本执行此操作。

我知道这可能含糊不清,如果问题不清楚,请告诉我。

1 个答案:

答案 0 :(得分:1)

AFAIK,这是不可能的。但是,我会使用替代解决方案(按升序排列):

  1. 如果您的客户的安全策略允许,请为创建新分支的远程计算机制作一些api,例如:带有身份验证的HTTP PUT [*]请求以及新分支的名称作为参数。然后,您可以通过git checkout -b empty git rm * git commit -m"create an empty branch" git push -u origin empty 或您喜欢的语言访问它,而无需使用完整的ssh访问权限。

  2. 创建一个空分支,因此即使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
  3. 在客户端(即开发者方)使用git hook,这将强制执行最佳做法,例如~\Views\Shared\Discount.ascx ~\Views\Dashboard\Shared\Discount.ascx 。当然,假设你的同事不会忽视它:)

  4. [*]或POST,但由于您提供了分支的名称,因此它应该是幂等的。