102

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

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

4

4 に答える 4

134

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
于 2012-10-18T18:42:05.207 に答える
33

はい、できます。両方のリモートリポジトリにプッシュするために、2回プッシュする必要はありませんが、1回だけプッシュする必要があります。私は以前に同じ問題を抱えていたので、ここでそれを行う方法を書きました。 Git:GithubとBitbucketの両方にプッシュ/プル

于 2013-06-26T16:08:26.330 に答える
30

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

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

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

まず、新しいリモコンを追加します。

$ 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

大きなオーバーヘッドではありませんが、時間の経過とともにすりおろされると確信しています。または、 `alias gpob =" git push origin master && git pushbitbucketmaster"を作成することもできます。

複数の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

私もそれについてブログを書きました。

于 2015-08-17T02:58:22.230 に答える
0

私はひねりを加えた同様の状況を持っています。過去数か月間、コードフォームを管理または更新していた既存のBitBucketブランチがあるように。

今の私の要件は、単一の「マスター」ブランチを使用してプロジェクトをGitHubにアップロードすることです。

ステップ1 -

これは私の既存のBitBucketプロジェクトリポジトリ情報です。

$ git remote -v show 

origin  https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git (fetch)
origin  https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git (push)

ステップ2 -

リモートgithubリポジトリのURLを追加します-

$ git remote set-url origin --add https://github.com/<USERNAME>/<PROJECT_NAME>.git

現在、github情報もあります($ git remote -v show)。

origin  https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git (fetch)
origin  https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git (push)
origin  https://github.com/<USERNAME>/<PROJECT_NAME>.git (push)

ステップ3-

理解を深めるためにリポジトリの名前を変更します-

$ git remote add bitbucket https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git
$ git remote add github https://github.com/<USERNAME>/<PROJECT_NAME>.git

今、情報が更新されました($ git remote -v show)。

bitbucket   https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME> (fetch)
bitbucket   https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME> (push)
github      https://github.com/<USERNAME>/<PROJECT_NAME>.git (fetch)
github      https://github.com/<USERNAME>/<PROJECT_NAME>.git (push)
origin      https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME> (fetch)
origin      https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME> (push)
origin      https://github.com/<USERNAME>/<PROJECT_NAME>.git (push)

ステップ4-

GitHubでプロジェクト全体をコミット/プッシュする時間です。

$ git add --all && git commit -m "first commit"

$ git push -u origin master

その結果、このエラーが発生しました-

Everything up-to-date
Branch 'master' set up to track remote branch 'master' from 'origin'.
remote: Repository not found.
fatal: repository 'https://github.com/<USERNAME>/<PROJECT_NAME>.git/' not found

ステップ5(SSHキーの設定)-

数時間の調査の結果、これがSSHキーの問題であることがわかりました。

そこで、BitBucketとGitHubの両方のSSHキーを生成し、それぞれのアカウントにそれらのキーを追加します。

ステップ6(SSHリポジトリのURLを設定)-

https://URLをsshBitBucketとGitHubのに変更します。

$ git remote set-url bitbucket git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git
$ git remote set-url github git@github.com:<USERNAME>/<PROJECT_NAME>.git

原点を削除して、原点リポジトリのURLを変更します。

$ git remote rm origin 

最初の原点を追加(BitBucket)-

$ git remote add origin git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git

2番目の原点を追加(GitHub)-

$ git remote set-url origin --add git@github.com:<USERNAME>/<PROJECT_NAME>.git

すべてのリポジトリURLがに変更されましたssh

$ git remote -v show

bitbucket    git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git (fetch)
bitbucket    git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git (push)
github       git@github.com:<USERNAME>/<PROJECT_NAME>.git (fetch)
github       git@github.com:<USERNAME>/<PROJECT_NAME>.git (push)
origin       git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git (fetch)
origin       git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git (push)
origin       git@github.com:<USERNAME>/<PROJECT_NAME>.git (push)

ステップ7-

すでにコードを追加してコミットしているので、プッシュするだけです。

$ git push -u origin master

接続を続行してもよろしいですか(はい/いいえ/ [指紋])?はい

最後に、プロジェクト全体がマスターブランチのGitHubにプッシュされました。


両方のブランチにコードをプッシュします-

$ git push

コードをGitHubまたはBitBucketのみにプッシュします-

$ git push github master また $ git push bitbucket master

ブランチの変更-

$ git checkout <BRANCH_NAME>

ライブ保存情報-

  1. 1つのプロジェクトでBitbucketとGitHubを同時に使用する
  2. リモートオリジンを削除します

重要な注意点

手順5と6は便利です。http://リポジトリのURLを使用している場合sshは、より良い方法でリポジトリを維持するためにに変更してください。

または、ステップ1/の後に誰かがリポジトリのURLを見つけた場合は、ステップ5と6を使用することをお勧めします。https://$ git remote -v show

誰かがすでにsshリポジトリを持っている場合は、ステップ5と6を無視します。

于 2022-02-08T17:09:05.143 に答える