Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git-从一个远程回购中拉,推到另一个:我可以推远程回购的名称吗?_Git_Version Control_Git Remote - Fatal编程技术网

Git-从一个远程回购中拉,推到另一个:我可以推远程回购的名称吗?

Git-从一个远程回购中拉,推到另一个:我可以推远程回购的名称吗?,git,version-control,git-remote,Git,Version Control,Git Remote,我希望将git用于多个远程回购。我有我的中央git服务器(akaorigin),还有我的本地开发机器。我想做的是从kernel.org的gitrepo中下载最新的linux内核。然后我会做一些更改,然后将整个修改后的repo推送到我自己的git服务器上 我成功地做到了这一点(只需做几次git remote添加,一次用于源代码,一次用于kernel.org)。然而,如果我从头开始克隆origin,我就无法将kernel.org视为远程站点 是否有办法推动远程添加命令?还是每次我想从kernel.o

我希望将git用于多个远程回购。我有我的中央git服务器(aka
origin
),还有我的本地开发机器。我想做的是从kernel.org的gitrepo中下载最新的linux内核。然后我会做一些更改,然后将整个修改后的repo推送到我自己的git服务器上

我成功地做到了这一点(只需做几次git remote添加,一次用于源代码,一次用于kernel.org)。然而,如果我从头开始克隆origin,我就无法将kernel.org视为远程站点

是否有办法推动
远程添加
命令?还是每次我想从kernel.org(在新机器上)引入更改时,我都必须手动添加它


另外,当我创建本地分支时,我让它跟踪kernel.org中的一个远程分支。由于我无法将kernel.org视为新克隆上的远程站点,这是否意味着该分支不再跟踪kernel.org?

如果每次都进行克隆,您将丢失该repo的配置。这包括
reflog
stash
remotes
rere-cache
等等。不要这样做。推拉不会移动这些人工制品。推拉所得到的只是参考和满足这些要求所需的对象。远程设置不会传播。克隆是每次回购一次的操作。实际上,您根本不能使用克隆。您可以使用
git init
进行空回购,然后使用
git remote add
手动添加遥控器,然后使用
git fetch

git push origin --mirror

将所有本地引用推送到原点。

如其他答案中所述,我试图做的事情实际上无法在Git(共享远程)中完成。因此,我打算做的是避免开发人员机器上需要第三方远程设备。我将创建一个与kernel.org远程分支相同的本地分支。然后,我将把这个本地分支推送到我的git服务器(origin)。然后,我将创建一个cron脚本,该脚本将:

  • 克隆我在上面创建的分支
  • 为kernel.org添加远程
  • 执行git拉取以更新分支
  • 添加、提交和推送
这意味着我将在自己的git服务器上拥有kernel.org分支的副本,可以在本地团队中正常跟踪。所有合并都可以正常进行

你怎么想


谢谢

完全不可能“共享遥控器”。不过你可以试试这个

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

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

    #!/usr/bin/env bash

    git远程添加上游git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

    #请注意,您不需要添加
    源站
    远程,因为这是在克隆时设置的

  • 在新机器上进行克隆后,运行
    git引导程序
    脚本


  • 您是否拥有对中央git服务器的shell访问权限?您是否每次都要从kernel.org获取更改时进行git克隆?@elcanibal,不,我没有。我将kernel.org添加为远程,并创建了一个新分支,跟踪kernel.org的远程分支。您是否尝试过此方法?我们需要克隆的原因是多个开发人员可以访问此repo。这是否意味着每个开发人员都必须手动为kernel.org添加一个远程应用程序,如果他们希望从中删除更改的话?这不是重新选择的理由。您可以有一个从kernel.org提取的回购协议,其他人从该回购协议提取。或者,让每个开发人员添加一个内核。很抱歉,我不太明白这是如何回答这个问题的。你已经说明了为什么我们不必使用克隆,但你还没有回答这个问题。问题在于标准push命令不发送远程配置。这意味着,无论其他开发人员使用什么方式从源站获取回购,他们仍然没有远程设备。Push不会发送配置。倾斜将始终擦除您设置的任何远程设备。可能有一种方法可以通过git属性和自定义脚本来实现。但这总是需要用户做一些事情来启动。这与安全有关。通过提交您不应该影响其他人的计算机将要连接到的位置的内容。此外,假设我在服务器上保留cron repo的副本,我将不需要在cron脚本中克隆或添加远程设备-这只需要第一次完成。