プロジェクトに複数のオリジンを含めることはできますか?


188

プロジェクトはGitに2つ(またはそれ以上)の「オリジン」を持つことができますか?

1つのプロジェクトをgithubHerokuサーバーの両方にプッシュしたいと思います。

具体的には、githubリポジトリを追加するときにこのエラーが表示されます。

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

8
リモートリポジトリはいくつでも作成できますが、異なる名前を付ける必要があります。
フェリックスクリング

この場合、リポジトリ名は異なります。「起源」という言葉は変更可能な名前ですか?
クリスダトロー

4
はいgit remote rename <old> <new>linux.die.net/man/1/git-remote。しかし、Githubリポジトリに別の名前を付けることもできます...
Felix Kling


また、リモートの1つをデフォルトに設定して、プッシュするたびにそのリモートの名前を明示的に書き込むように求められることはありませんか?
40刑事

回答:


275

あなたは多くのとして持つことができるリモコンあなたが望むように、しかし、あなたは一つだけでは、リモート「起源」と命名していることができます。「origin」と呼ばれるリモートは、既存のリポジトリを複製するときにGitによって作成されるデフォルトのリモートであることを除いて、特別なものではありません。2番目のリモートを構成し、そのリモートからプッシュ/プルし、いくつかのブランチをセットアップして、オリジンではなくそのリモートからのブランチを追跡できます。

代わりに「github」というリモートを追加してみてください:

$ 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

4
この質問が重複する可能性があるという質問に対する投票数が最も多い回答で示されているように、リモートは複数のリポジトリを参照できます。したがって、あなたができることは、けれどもOPの目標だ場合はクリアしていない、1リモートおよびアップデート2つの以上のリポジトリにプッシュ。
AD7six

しかし、なぜあなたがこれをしたいのかといういくつかの実際的な例は何ですか?なぜ1つのディレクトリが複数のリポジトリをポイントしているのですか?通常、各リポジトリには専用のディレクトリがあります
dspacejs

4
Herokuのに展開@mightyspajかなり多くの皆様には、リモート呼び出したoriginとリモートと呼ばれますheroku
貧乳

@mightyspaj、またはチームがフォークを利用していて、それらにアクセスしたい場合があります。これは、異なるUTCのチームと協力してチームで行うため、PRを承認するときに、forkを使用して代わりにrebase / pushし、明日ではなく今すぐコードをマージできます)。
Benoit Drapeau 2017年

すべてのローカルブランチを一度に新しいリモートにプッシュする方法はありますか?
タナシス

89

後でこの質問に遭遇した場合の補足として、一度に複数のgitリポジトリサーバーにoriginをプッシュすることができます。

これは、次のコマンドを使用して別のURLをオリジンリモートに追加することで実現できます。

git remote set-url --add origin ssh://git@bitbucket.org/user/myproject.git

8
これに関するより多くの考えについては、この質問を参照してください
moi

3
では、これらのオリジンのすべてを削除せずに、これらのオリジンの1つを削除するにはどうすればよいですか
Michael

@Michael ./git/config[remote "origin"]セクションでファイルを編集してurlファイルを削除できます
Pini Cheyni

8
@Michaelgit remote set-url --delete origin ssh://git@bitbucket.org/user/myproject.git
Afrig Aminuddin 2018

すべてのリモートが同じコミット履歴を持っている必要がありますか?特定のコミットを一方のリモートにプッシュし、もう一方のリモートにはプッシュしない場合
Qasim

44

これは、GitHubとGitLabの複数のリモートを使用したサンプルプロジェクトです。

  1. GitHubのリモートリポジトリを追加する

    $ git remote add github https://github.com/Company_Name/repository_name.git
    
  2. GitLabのリモートリポジトリを追加する

    $ git remote add gitlab https://gitlab.com/Company_Name/repository_name.git
    
  3. これで、プロジェクトに複数のリモートがあります。ダブルチェック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. 複数のリポジトリにどのようにプッシュしますか?

    $ git push github && git push gitlab
    

2
$ git pushすべてのリモコンにプッシュするだけではありませんか?
ウォータークーラーv2 2018年

githubをプッシュしてからgitlabに自動プッシュしようとすると、問題が発生します。手伝ってくれませんか?ひとつずつ原点を押していきたい。
Mitul Marsoniya、

gitlabに2つのプロジェクトと2つのリポジトリがある場合、これをどのように操作しますか?1つのプロジェクトからコードを取得して、それを他のプロジェクトにプッシュしますか?
ムジジャック

2

オリジンの代わりに別の名前を付けることで、別のリモートアカウントをリポジトリに追加できます。origin2などの名前を使用できます。あなたのgitコマンドは次のように変更できます

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


1
git remote set-url --add --push origin git@github.com:user/my-project.git
git remote set-url --add --push origin git@bitbucket.org:user/my-project.git

これで2つの原点があります。


1
--pushオプションのおかげで、この回答は他の回答よりも役立つ/洗練されています。
Dmitri Zaitsev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.