在克隆时,`git`只能命名为"origin"吗?

vfc*_*sts 19 git

Git是否只将远程名称"origin"用于通过克隆创建的存储库?

例如,假设我创建了一个存储库,将其放在一个遥控器上,并尝试将其再次克隆到同一个目录中,哪个Git名称来源?

Von*_*onC 46

origin是使用的默认名称git clone,但您可以在克隆时使用任何其他名称:

--origin <name>
-o <name>
Run Code Online (Sandbox Code Playgroud)

而不是使用远程名称origin来跟踪上游存储库,请使用<name>.

如果不这样做,则无论何时克隆存储库,该默认名称都将引用该远程存储库origin.

  • 我想我开始更好地理解git了.我认为git有太多的快捷方式和缩写方式做同样的事情,这一切都让人感到困惑.准确地说,省略了--origin名称或-o名称选项的git clone命令默认使用'origin'作为该repo的快捷方式/名称.我认为git用户社区渴望展示如何轻松简单地执行git命令只会降低理解速度 (2认同)
  • 你是说你宁愿它每次都要求你提供上游名称,以避免任何一致性的希望,或者只是从不允许你改变那个遥控器的名字?远程名称没有什么特别之处.我的一些回购中有大量的遥控器.有些有两个(或更多)天然上游.git几乎没什么魔力.宣称"起源"这个词是神奇的只会让理解变得更难. (2认同)

eck*_*kes 18

如果origin不适合您,您始终可以将其重命名为更合适的名称:

git remote rename <old> <new>
Run Code Online (Sandbox Code Playgroud)

请参阅git remote的说明.


Von*_*onC 5

在 Git 2.30(2021 年第一季度)中,“ git cloneman学习了clone.defaultremotename配置变量来自定义用于调用克隆存储库的远程的昵称。

请参阅Sean Barag ( )提交的 de9ed3e提交 75ca390提交 ebe7e28提交 f2c6fda提交 444825c提交 552955e(2020 年 10 月 1 日)和提交 349cff7(2020 年 9 月 29 日)。(由Junio C Hamano 合并 -- --提交 40696c6中,2020 年 10 月 27 日)sjbarag
gitster

clone:允许-o/的可配置默认值--origin

帮助者: Junio C Hamano
帮助者: Johannes Schindelin
帮助者: Derrick Stolee
帮助者: Andrei Rybak
签字人: Sean Barag

虽然默认远程名称“ origin”可以在克隆时使用( man )选项进行更改,但以前无法为该远程名称指定默认值。 添加对新配置的支持,新创建的远程名称按优先级顺序解析:git clone--origin
clone.defaultRemoteName

  1. (最高优先级)直接传递给( man )的远程名称git clone -o
  2. clone.defaultRemoteName=new_name配置中的A ( man )git clone -c
  3. clone.defaultRemoteName中设置的值,/path/to/template/config其中--template=/path/to/template提供
  4. clone.defaultRemoteName在非模板配置文件中设置的值
  5. 默认值为origin

git config现在包含在其手册页中:

clone.defaultRemoteName

克隆存储库时要创建的远程名称。
默认为origin,并且可以通过将--origin命令行选项传递给来覆盖git clone

git clone现在包含在其手册页中:

不要使用远程名称origin来跟踪上游存储库,而是使用<name>. 从配置中
覆盖。clone.defaultRemoteName


警告:

git -c core.bare=false clone --bare ...( man )会出现段错误,该问题已通过 Git 2.32(2021 年第 2 季度)得到纠正。

请参阅brian m 的提交 7555567(2021 年 3 月 10 日)。卡尔森 ( bk2204) .
(由Junio C Hamano 合并 -- gitster--提交 3099d4f中,2021 年 3 月 22 日)

builtin/init-db:当 core.bare 设置为 false 时处理裸克隆

报告人:Joseph Vusich
签署人:brian m. 卡尔森

552955e(“ clone:使用更传统的配置/选项分层”,2020-10-01,Git v2.30.0-rc0 -合并在批次#1中列出)中,clone学会了在创建新的配置选项之前在其执行的早期读取配置选项存储库。

然而,这导致了一个问题:如果该设置在全局配置中core.bare设置为false,则克隆裸存储库 segfaults 。

发生这种情况是因为存储库被错误地认为是非裸的,但克隆已将工作树设置为NULL,然后取消引用。

初始化存储库的代码已经考虑了用户可能想要覆盖( man )--bare选项的事实,但它没有考虑克隆,它使用不同的选项。 让我们检查一下工作树是否不是,因为这就是克隆指示存储库是裸露的方式。 的情况也是如此,所以我们不会回归这种情况。git init
NULL
git init