BitbucketとGitHubにプッシュしたいリポジトリが1つあります。私のリポジトリが両方によってホストされることが重要です。
Gitでこれを行う方法はありますか?
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
はい、できます。両方のリモートリポジトリにプッシュするために、2回プッシュする必要はありませんが、1回だけプッシュする必要があります。私は以前に同じ問題を抱えていたので、ここでそれを行う方法を書きました。 Git:GithubとBitbucketの両方にプッシュ/プル
いくつかの簡単なソリューション。
これは頭を動かすのが最も簡単ですが、維持するのに最も努力します。
まず、新しいリモコンを追加します。
$ 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を追加します。
$ 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
私もそれについてブログを書きました。
私はひねりを加えた同様の状況を持っています。過去数か月間、コードフォームを管理または更新していた既存の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をssh
BitBucketと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>
ライブ保存情報-
手順5と6は便利です。http://
リポジトリのURLを使用している場合ssh
は、より良い方法でリポジトリを維持するためにに変更してください。
または、ステップ1/の後に誰かがリポジトリのURLを見つけた場合は、ステップ5と6を使用することをお勧めします。https://
$ git remote -v show
誰かがすでにssh
リポジトリを持っている場合は、ステップ5と6を無視します。