我希望将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了?
答案 0 :(得分:2)
如果您每次都克隆,那么您将失去该repo配置中的内容。这包括reflog
,stash
,remotes
和rerere cache
等等。不要这样做。推拉不会移动这些人工制品。你从推拉中得到的只是参考和满足它的对象。远程设置不会传播。克隆是每次回购操作一次。实际上你根本不能使用克隆。您可以使用git init
创建一个空的仓库,然后使用git remote add
然后git fetch
手动添加远程仓库。
答案 1 :(得分:2)
git push origin --mirror
会将所有本地裁判推到原点。
答案 2 :(得分:0)
正如其他答案中所述,我正在尝试做的事情无法在Git(共享遥控器)中完成。所以我打算做的是避免在开发者机器上使用第三方遥控器。我将创建一个与kernel.org远程分支相同的本地分支。然后我将这个本地分支推送到我的git服务器(origin)。然后我将创建一个cron脚本:
这意味着我将在我自己的git服务器上拥有kernel.org分支的副本,可以在我们的本地团队中正常跟踪。然后所有合并都可以正常进行......
你的想法是什么?
由于
答案 3 :(得分:0)
分享遥控器"并不完全可能。不过你可以试试这个。
将shell脚本放在repo的根目录(或scripts/
)目录中。例如,请将其称为git-bootstrap
。
在脚本中添加遥控器,如下所示:
#!/ usr / bin / env bash
git remote add上游git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
#请注意,您无需添加克隆时设置的origin
遥控器。
在新计算机上克隆后,运行git-bootstrap
脚本。