Git - 从一个远程仓库拉出来,推到另一个:我可以推送遥控器的名字吗?

时间:2012-08-18 16:46:50

标签: git version-control git-remote

我希望将git与多个远程回购一起使用。我有我的中央git服务器(又名origin),以及我的本地开发机器。我想要做的是从kernel.org的git repo下载最新的linux内核。然后我将进行一些更改,然后将整个修改过的repo推送到我自己的git服务器。

我已经成功地做到了这一点(只需要做几次git remote添加 - 一个用于原点,一个用于kernel.org)。但是,如果我从头开始克隆原点,我无法将kernel.org视为远程。

有没有办法推送remote add命令?或者是每次我想从kernel.org(在新机器上)引入更改时,我是否必须手动添加它?

此外,当我创建我的本地分支时,我让它跟踪来自kernel.org的远程分支。由于我无法在新克隆上看到kernel.org作为遥控器,这是否意味着该分支不再跟踪kernel.org了?

4 个答案:

答案 0 :(得分:2)

如果您每次都克隆,那么您将失去该repo配置中的内容。这包括reflogstashremotesrerere cache等等。不要这样做。推拉不会移动这些人工制品。你从推拉中得到的只是参考和满足它的对象。远程设置不会传播。克隆是每次回购操作一次。实际上你根本不能使用克隆。您可以使用git init创建一个空的仓库,然后使用git remote add然后git fetch手动添加远程仓库。

答案 1 :(得分:2)

git push origin --mirror

会将所有本地裁判推到原点。

答案 2 :(得分:0)

正如其他答案中所述,我正在尝试做的事情无法在Git(共享遥控器)中完成。所以我打算做的是避免在开发者机器上使用第三方遥控器。我将创建一个与kernel.org远程分支相同的本地分支。然后我将这个本地分支推送到我的git服务器(origin)。然后我将创建一个cron脚本:

  • 克隆我在上面创建的分支。
  • 为kernel.org添加远程
  • 执行git pull更新分支
  • 添加,提交和推送

这意味着我将在我自己的git服务器上拥有kernel.org分支的副本,可以在我们的本地团队中正常跟踪。然后所有合并都可以正常进行......

你的想法是什么?

由于

答案 3 :(得分:0)

分享遥控器"并不完全可能。不过你可以试试这个。

  1. 将shell脚本放在repo的根目录(或scripts/)目录中。例如,请将其称为git-bootstrap

  2. 在脚本中添加遥控器,如下所示:

    #!/ usr / bin / env bash

    git remote add上游git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

    #请注意,您无需添加克隆时设置的origin遥控器。

  3. 在新计算机上克隆后,运行git-bootstrap脚本。