关于git:项目可以有多个来源吗?

Can a project have multiple origins?

一个项目在Git中可以有两个(或更多)的"来源"?

我想把一个项目推到Github和Heroku服务器上。

具体来说,添加GitHub存储库时会出现此错误:

1
2
$ git remote add origin https://github.com/Company_Name/repository_name.git
fatal: remote origin already exists.


您可以拥有任意多个遥控器,但只能有一个名为"原点"的遥控器。名为"origin"的远程程序在任何方面都不是特别的,只是它是在克隆现有存储库时由git创建的默认远程程序。您可以配置第二个遥控器,从该遥控器推/拉,并设置一些分支来跟踪来自该遥控器的分支,而不是原始分支。

尝试添加名为"github"的远程程序:

1
2
3
4
5
6
7
8
9
10
$ git remote add github https://github.com/Company_Name/repository_name.git

# push master to github
$ git push github master

# Push my-branch to github and set it to track github/my-branch
$ git push -u github my-branch

# Make some existing branch track github instead of origin
$ git branch --set-upstream other-branch github/other-branch


对于以后遇到此问题的任何人来说,一次可以将源站推送到多个Git存储库服务器,这是一个附带说明。

您可以通过使用以下命令将另一个URL添加到源站远程服务器来实现这一点。

1
git remote set-url --add origin ssh://[email protected]/user/myproject.git


下面是一个包含多个远程设备的示例项目,Github&Gitlab:

  • 为GitHub添加远程回购

    1
    $ git remote add github https://github.com/Company_Name/repository_name.git
  • 为Gitlab添加远程报告

    1
    $ git remote add gitlab https://gitlab.com/Company_Name/repository_name.git

  • 现在项目中有多个遥控器。与git remote -v复核

    1
    2
    3
    4
    5
    $ git remote -v
    github https://github.com/Company_Name/repository_name.git (fetch)
    github https://github.com/Company_Name/repository_name.git (push)
    gitlab https://gitlab.com/Company_Name/repository_name.git (fetch)
    gitlab https://gitlab.com/Company_Name/repository_name.git (push)
  • 如何推送到多个存储库?

    1
    $ git push github && git push gitlab


  • 您可以通过提供不同的名称(而不是源站)将另一个远程帐户添加到存储库中。您可以使用origin2等名称。所以您的git命令可以修改为

    1
    git remote add origin2 https://github.com/Company_Name/repository_name.git