GitHubからBitbucketへの分岐


160

GitHubでホストされいるCakePHPに基づくプロジェクトに取り組んでいます私のプロジェクトBitbucketでホストされています。どちらもgitを使用しています。基本的に、アップデートを取得できるようにするために、BitbucketリポジトリにCakePHPの「フォーク」を作成したいのですが(gitは初めてなので、適切な用語を使用しているかどうかはわかりません)。 CakePHPのすべてのzip / tarをダウンロードしてフォルダを置き換える必要はなく、コミットしてプッシュしますが、「マージ」(?)を使用することもできます。


5
この種のワークフローへの適切なアプローチについては、stackoverflow.com / questions / 1811730 /…を参照してください。
Dolbz

@Dolbzそれは私が必要とするもので正しいようです、ありがとう!
エントロピー

回答:


143

今日、さまざまなサイト間で「プルリクエスト」を送信することはできません。これに対する機能リクエストをBitbucketの課題追跡に追加しました:#3288。これを追跡したい場合は、自分をフォロワーとして追加することをお勧めします。

ただし、zipファイルやtarballをダウンロードしなくても、ソースをGitHubからBitbucketに移動できます。GitHubからクローンを作成し、Bitbucketにプッシュします。

$ git clone https://github.com/cakephp/cakephp
$ cd cakephp
$ git push git@bitbucket.org:mg/cakephp.git master

mg/cakephp最初に、Bitbucketで空のGitリポジトリとして作成しました。これにより、チェンジセットをGitHubからBitbucketにプッシュ/プルできます。


3
では、どのようにして上流からプルすることができますか?
Ruchir Shukla 14

1
@RuchirShukla:基本的に同じ方法です。自分のマシンからコミットを移動するには、アップストリームからプルする必要があります。次に、それを他のホスティングサイトにプッシュして、2つを同期します。
Martin Geisler、2014

4
これはcd cakephp、2つのコマンドの中間にある必要があることを除いて、私にとってはうまくいきました。初心者以外の人にとっては明らかですが、初心者はなぜそれが機能しないのか疑問に思うかもしれません。
aaronbartell 2015

デモ用にこれのyoutubeビデオを作成できますか?複製できませんでした。これらの指示を実行することはできましたが、プッシュしてコミットすると、フォークされたブランチではなくマスターにプッシュしようとしています。
2016

これはとしては機能しませんfork。ブランチとタグはBitBucketにコピーされません。
ジョエルKarunungan

81

以下のワークフローでは、githubリポジトリを新しいリモートとして呼び出しsync、bitbucketリモートをとして追加しますorigin。またgithub、githubリポジトリmasterを追跡するために呼び出されるブランチと、bitbucketリポジトリを追跡するために呼び出されるブランチを追加します。空の「myrepository」というbitbucketリポジトリがあることを前提としています。

リモコンのセットアップ

# setup local repo
mkdir myrepository
cd myrepository
git init

# add  bitbucket remote as "origin"
git remote add origin ssh://git@bitbucket.org/aleemb/myrepository.git

# add github remote as "sync"
git remote add sync https://github.com/aleemb/laravel.git

# verify remotes
git remote -v
# should show fetch/push for "origin" and "sync" remotes

セットアップブランチ

# first pull from github using the "sync" remote
git pull sync

# setup local "github" branch to track "sync" remote's "master" branch
git branch --track github sync/master

# switch to the new branch
git checkout github

# create new master branched out of github branch
git checkout -b master

# push local "master" branch to "origin" remote (bitbucket)
git push -u origin master

これでgithub、githubリポジトリのmasterブランチを追跡するローカルブランチが作成されました。また、ローカルmasterブランチでbitbucketリポジトリ(masterデフォルトではブランチ)を追跡する必要があります。

これにより、githubブランチをプルし、それらの変更をmasterブランチにマージし(ただし、マージよりもリベースを優先)、masterブランチをプッシュできます(ビットバケットにプッシュします)。


これは機能していないようですが、良い考えです。とにかくそれを修正して機能させるには?
bozdoz 2013年

ローカルのgithubブランチがリモートのgithubマスターブランチを追跡している場合、リモートのbitbucketマスターにプッシュしますか?githubへのプッシュはいつ行われますか?@aleemb
bozdoz

1
Git 2.2.1 --set-upstreamでは非推奨です...しかし、これはgithub、上流のリポジトリを設定する前にブランチを作成する限り機能します。
ケンプリンス

3
--set-upstream doを実行する代わりに:git fetchおよびgit branch --track github sync/master
Beaudinn Greve

3
不足しているのは、gitブランチコマンドの後であるgit checkout githubと思いますgit checkout -b master。最終的にこれらのブランチ(git branch -a)になります:github、master、remotes / origin / master、remotes / sync / master
Klemens Zleptnig

31

リポジトリを最新の状態に保ちたい場合は、次のようにGithub(upstream)とBitbucket(origin)の2つのリモートを使用します。

# Clone original CakePHP source code from Github
git clone --mirror https://github.com/cakephp/cakephp
cd cakephp
# Rename remote from `origin` to `upstream`
git remote rename origin upstream
# Add your Bitbucket repo (this is where your code will be pushed)
git remote add origin https://bitbucket/your/repo.git
# Push everything to Bitbucket
git push --mirror origin

GithubからCakePHPの更新をプルするには:

git pull upstream master

コードの変更をBitbucketにプッシュするには:

git push origin master

最初の コマンドで`git clone mybitibucket / cakephp / cakephp`を意味したと思いますよgitね?これが先の方法です...
ribamar

これは素晴らしいです!トンありがとう!高く評価
Aakanksha、2018年

これも機能しません。ブランチとタグはBitbucketに含まれていません。
ジョエルKarunungan

@JoelKarunungan良い点!ブランチとタグを含むすべてをプッシュするために、これはうまくいくと思います:git push --all --mirror origin。回答を更新しました。
ズビン

@ズビンこれやってみた?fatal: --all and --mirror are incompatible またgit pull upstream master、致命的なエラーをスローします。fatal: Couldn't find remote ref master
ジョエルKarunungan

15

BitBucketで新しいリポジトリを作成するときに、右上のボタンImport repositoryをクリックします。Clone or downloadフォークするリポジトリのGithubをクリックしたときに見つかったhttpsのURLを入力します。

リポジトリに名前を付け、プライバシー設定を構成すれば、それで完了です。


1
これは、フォークではなくクローンです。
エントロピー2014年

7
現在のところ、この機能はBitbucketで「リポジトリのインポート」というラベルが付けられています。
Wild Pottok

1
@entropid a forkは元のレポのクローンです。gitの世界では、
Forking

@ enorl76一般的な使用に関しては特にそうではありません。
2017

2
@ enorl76はい、技術的にはそうです。ただし、フォークは、クローンを元のリポジトリに「接続」したままにして、そこから更新を取得し、最終的にそれをプッシュする方法です。ここで、「原点」と「上流」のリンクの組み合わせが基本的な役割を果たすようになります。その後、GithubとBitbucketは、「プッシュリクエスト」のように、フォークをより生産的で使いやすいものにするために、アップストリームの周りにすべてのツールセットを構築しました:)
Dan Niero

1

@Martin Geislerの回答以来、Bitbucketはgithub.comからリポジトリをインポートする機能を有効にしていることに気づきました

私は成功しbitbucket.orgにプライベートリポジトリにgithub.comから民間レポをインポートすることができました

ここにいるの手順は

  1. [作成]ボタンをクリックして、リポジトリを選択します( '+'>リポジトリ)。
  2. ここで、新しいリポジトリを作成する代わりに、ポップアップするモーダルの右上隅からインポートリポジトリを選択します。
  3. リポジトリをインポートするための新しいモーダルに、githubリポジトリのURLと認証資格情報を入力します。
  4. それでおしまい。すべてがgithubからbitbucketにスムーズにインポートされます。

スクリーンショットの右上隅にあるインポートリポジトリリンクに注意してください。


0

あなたはあなたのプロジェクトでリポジトリを簡単にダウンロードしたいだけだと思います...そして、あなたはcakePHPに貢献しないでしょう?

もしそうなら、あなたはあなたのリポジトリに外部参照を追加する必要があるだけです。

SVN:GITで外部と同等ですか?

そして、後でCakePHPに貢献したい場合でも、元のリポジトリで問題なく貢献できます。

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