在git中添加“-单分支”有什么区别?

时间:2019-09-05 17:57:03

标签: git git-branch git-clone

在使用git clone -b <branch-name> <repo-name>之前,我已经克隆了一个仓库的一个分支,但是最近发现正在使用git clone --single-branch -b <branch-name> <repo-name>

有什么区别?

2 个答案:

答案 0 :(得分:1)

您使用的命令(Programa ejecutado con configuracion: limpiador_local.conf timestamp: 20190905-1534 posadas1: DELETE m FROM movimiento AS m INNER JOIN tarjeta AS t ON m.nro_tarjeta = t.nro_tarjeta WHERE m.tipo_movimiento = 17 AND t.nro_tarjeta IN(3,4); Limpieza de Movimientos [0 = OK]: 0. - Cantidad Tarjetas Servicio Maxima = SELECT numero FROM configuracion WHERE clave='cantidad_tarjeta_servicio'. )会克隆整个存储库。 git clone -b <branch-name> <repo-name>选项唯一要做的就是更改最初签出的内容。

-b更新默认的refspec,以便仅 下载指定分支的历史记录(和相关数据)。

答案 1 :(得分:0)

要进一步扩展Mark Adelsberger的回答(我已经赞成),请注意,git clone的意思是:

  1. 创建一个新的完全空目录,或者如果有指导,则接管现有的完全空目录:

    git clone https://github.com/git/git
    

    将创建新目录git来保存新的Git存储库。输入其余步骤的目录。但是您的命令行解释器不在新目录中,因此克隆完成后,您必须自己输入新目录。

  2. 在此空目录中运行git init,以便它现在有一个.git子目录来保存Git存储库。新的Git存储库完全是空的(没有提交,没有分支等,尽管您位于不存在的master分支上)。

  3. 运行git remote add origin url。例如,对于上述情况,Git会添加一个名为origin的遥控器,告诉Git连接到https://github.com/git/git

  4. 还运行任何其他需要的git config命令。

  5. 运行git fetch origin

  6. 为某些名为 git checkout branch 的计算机运行branch

如果愿意,您可以手动运行这六个步骤,但是git clone更容易。

现在您知道这六个步骤是什么,现在很容易解释-b参数 --single-branch参数:

  • -b branch在第6步中选择要传递给git checkout的参数。如果您自己未选择分支名称,则Git将从他们的建议中获得推荐 Git,在步骤5中,将使用该名称。

  • --single-branch在第4步中添加了git config命令。特别是,它更改了remote.origin.fetch设置。

git remote add步骤将/将remote.origin.fetch设置为+refs/heads/*:refs/remotes/origin/*,这是git fetch命令的指令(请参见步骤5)以获取 all < / em>分支,并将它们全部重命名为您的origin/*远程跟踪名称。

对于--single-branchgit clone会覆盖默认值。该refspec对的左侧不是+refs/heads/*,而是+refs/heads/branch。因此,右侧为+refs/remotes/origin/branch,因此最终的remote.origin.fetch设置为:

+refs/heads/<branch>:refs/remotes/origin/<branch>

指示第5步中的git fetch和以后所有的git fetch操作,以仅更新 您的origin/branch远程服务器,跟踪名称。

请注意,如果您没有事先特别选择某个分支,git clone将使用其他Git在步骤5中推荐的任何分支,以实现步骤4的配置结果。这意味着实际上这些步骤的顺序并不完全:git clone仅在最方便的地方在内部进行每个部分。如果出于某种原因想要手动执行此操作,则需要按此顺序执行六个步骤。 (不过,只要由于其他git remote add选项而不需要任何其他特殊配置选项,就可以将-tgit clone选项一起使用来合并步骤3和4。)