1つのプロジェクトでBitbucketとGitHubを同時に使用するにはどうすればよいですか?


94

BitbucketとGitHubにプッシュしたいリポジトリが1つあります。私のリポジトリが両方でホストされていることが重要です。

Gitでこれを行う方法はありますか?


4
これは非常に便利なようです。特に、1つのリポジトリがダウンしている場合。現時点ではbitbucketがダウンしており、基本的に自分の仕事をすることができません。
2015年

回答:


117

gitでは複数のリモートリポジトリを使用できます。しかし、あなたは私が信じている2つのリモコンに別々に押し込む必要があるでしょう。

たとえば、プロジェクトが現在githubを指している場合、現在のリモートリポジトリの名前を次のように変更できますgithub

$ git remote rename origin github

次に、別のリモートリポジトリを追加できますbitbucket

$ git remote add bitbucket git@bitbucket.org:your_user/your_repo.git

githubまたはbitbucketの対応するブランチに変更をプッシュするために、これを行うことができます:

$ git push github HEAD
$ git push bitbucket HEAD

同じルールがプルに適用されます。プルするリモートを指定する必要があります。

$ git pull github your_branch
$ git pull bitbucket your_branch

8
訪問する将来の人々に注意してください、あなたの.ssh/configファイルはこのセットアップを達成するための鍵です。使用するものを識別するためにa Host github.comとa Host bitbucket.orgを追加IdentityFileします。そうすれば、bitbucketとgithubの間でスワップしようとするときに、アクセス拒否エラーが発生することはありません。これが誰かを助けることを願っています。
Ultimater


28

いくつかの簡単なソリューション。

複数のリモートが個別にプッシュ(およびフェッチ)

これは頭​​を動かすのに最も簡単ですが、維持するのに最も努力が必要です。

新しいリモートを追加することから始めます。

$ cd myproject 
$ git remote add bitbucket ssh://git@bitbucket.org/user/myproject.git 
$ git push bitbucket master

まっすぐ進む?もちろん、変更をコミットするたびに、元の「オリジン」と新しいリモートの「ビットバケット」の両方にプッシュする必要があります。

$ git push origin master
$ git push bitbucket master

大きなオーバーヘッドではありませんが、時間の経過とともにすり減ると確信しています。または、 `エイリアスgpob =" git push origin master && git push bitbucket master "を作成できます。

複数のURLが連続してプッシュ(およびフェッチ)された単一のリモート

このメソッドを使用して、既存のリモート「オリジン」にURLを追加します。

$ cd myproject
$ git remote set-url --add origin ssh://git@bitbucket.org/user/myproject.git
$ git push origin master
Everything up-to-date
Everything up-to-date

はるかに少ない労力!

もちろん銀の裏地には雲があり、この場合、同時に複数のURLにプッシュできますが、元の「起源」からしかフェッチできません(これは変更できますが、この投稿の範囲外です) )。

最後に、どのリモートからフェッチされるかを確認します。

$ git remote -v show

私もそれについてブログ書いた

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.