Can a project have multiple origins?

2019-01-16 00:46发布

Can a project have two (or more) "origins" in Git?

I would like to push a single project to both github and a Heroku server.

Specifically, this error appears when adding the github repository:

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

3条回答
来,给爷笑一个
2楼-- · 2019-01-16 01:34

Here's a sample project with multiple remotes, GitHub & GitLab:

  1. Add remote repo for GitHub

    $ git remote add github https://github.com/Company_Name/repository_name.git
    
  2. Add remote repo for GitLab

    $ git remote add gitlab https://gitlab.com/Company_Name/repository_name.git
    
  3. Now you have multiple remotes in the project. Double check with git remote -v

    $ 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)
    
  4. How do you push to multiple repositories?

    $ git push github && git push gitlab
    
查看更多
时光不老,我们不散
3楼-- · 2019-01-16 01:45

You can have as many remotes as you want, but you can only have one remote named "origin". The remote called "origin" is not special in any way, except that it is the default remote created by Git when you clone an existing repository. You can configure a second remote, push to/pull from that remote, and setup some branches to track branches from that remote instead of origin.

Try adding a remote called "github" instead:

$ 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
查看更多
Ridiculous、
4楼-- · 2019-01-16 01:46

As a side note for anyone stumbling upon this question later, it is possible to have origin push to more than one git repository server at a time.

You can achieve this by using the following command to add another URL to the origin remote.

git remote set-url --add origin ssh://git@bitbucket.org/user/myproject.git
查看更多
登录 后发表回答