在git仓库中,是否可以在克隆的配置中预先指定“远程”?

时间:2018-12-23 03:03:09

标签: git

在git存储库中,我想“预指定”远程服务器,以便在克隆存储库时将远程服务器预加载到克隆的.git/config中吗?这合理可行吗?如果可以,怎么办?

2 个答案:

答案 0 :(得分:3)

Git不允许您那样影响存储库的配置。

一个常见的解决方案是在您的存储库中分发一个脚本,该脚本将执行必要的存储库配置:设置远程控制,挂钩等。然后,如果人们需要该特定配置,则可以指示他们运行该脚本。

答案 1 :(得分:0)

不是,不是,但是请参阅下面的步骤4。

git clone命令以一些特殊的角问题为模,等效于:

  1. mkdir target,其中 target 是从您要克隆的URL派生的(如果您为git clone提供现有空目录的名称,则会跳过)。后续操作在目标目录中运行。
  2. git init
  3. git remote add remote url。这里的 remote 默认为origin,但是您可以指定其他名称。
  4. 如果在命令行上指定了其他git config命令(-c--config)。
  5. git fetch remote
  6. git checkout branch,其中 branch 是您在命令行上指定的,或者是由Git指示从中获取步骤4的那个。

默认情况下,内置远程控制器origin是通过git remote add的等效项进行配置的,但它等效于:

git config remote.<remote>.url <url>
git config remote.<remote>.fetch '+refs/heads/*:refs/remotes/<remote>/*'

(以明显的方式替换尖括号)。

这意味着,如果您可以说服人们跑步:

git clone \
    -c remote.abc.url=ssh://example.com/path/to/abc.git \
    -c remote.abc.fetch='+refs/heads/*:refs/remotes/abc/*' \
    ssh://example.com/path/to/repo.git

(而不只是git clone ssh://example.com/path/to/repo.git),然后,他们将有一个已配置的abc遥控器。但这取决于运行git clone的人:您的repo.git不能以相同的方式直接影响他们的.git/config