フォークを理解している場合、概念的には次の手順が含まれます。
これはどのように見えるかです:
Original <──upstream─── Forked
(server) (server)
↑
│Origin
│
(local)
クローン作成との主な違いは、これらの手順がローカルではなくサーバー側であることです。 gitコマンドラインでこれを手動で複製するにはどうすればよいですか?
これが私がこれまでにしたことです:
この段階で、ローカルリポジトリにすべてを設定しました。中間ローカルクローンを使用して、元のリポジトリとフォークされたリポジトリの間で変更を同期できます。だからこれは私が持っているものです:
Original Forked
(server) (server)
↑ ↑
│ │Origin
│ │
└───────upstream─── (local)
ここで、このリンクをサーバーにプッシュするにはどうすればよいですか?つまり、最初の図と一致するように、元のリポジトリをサーバー側フォークされたリポジトリのアップストリームリモートにしますか?
この質問はGitHub固有ではないことに注意してください。これは、BitBucketでも実行したい場合があります。理想的には、サイト間でもこれを実行できるはずです。私はここSOで同様の質問をたくさん読みましたが、明確な答えはありません。
コマンドラインでAPIを使用してBitbucketでプロジェクトをフォークできますが、少なくともソースプロジェクトへの読み取りアクセス権が必要です。
構文は次のとおりです。
curl -v --user {username}:"{password}" \
https://bitbucket.org/api/1.0/repositories/{accountname}/{repo_slug}/fork \
--data "name=mynewrepo"
例えば.
プロジェクトprojectABC
をアカウントABC
からアカウントXYZ
にProjectXYZ
という名前でフォークするには、次のコマンドを使用します
curl -v --user XYZ:"XYZPASSWORDXYZ" \
https://bitbucket.org/api/1.0/repositories/ABC/ProjectABC/fork \
--data "name=ProjectXYZ"
詳細については、 Bitbucketのドキュメント を参照してください。
次に、このプロジェクトをローカルマシンに複製します。
git clone your_target_git_repository_path
プロジェクトディレクトリに移動し、ソースリポジトリを指すリモートupstream
を追加します。
git remote add upstream source_git_repository_path
これで、いつでもソースリポジトリから(たとえばマスターブランチから)変更をプルするには、次を使用します。
git pull upstream master
ローカルコミットをサーバー上のターゲットリポジトリにプッシュするには、次を使用します。gitPush Origin master
また、ターゲットリポジトリでの変更をソースリポジトリとマージする準備ができたら、Bitbucket Webサイトから、または Bitbucket API:プルリクエスト を使用してプルリクエストを作成します。
GitHubの場合、コマンドhub fork
を使用して hub
CLI でこれを実行できるようになりました。私はそれを使用していませんが、ドキュメントに基づいて、これを行うように見えます:
git clone [email protected]:some_user_or_organization/some_project.git
cd some_project
hub fork
...そして、2つのリモートができあがります。Origin
はアップストリームを指し、もう1つはGitHubユーザー名と同じ名前で新しいフォークを指します。 (hub
もリモート名をそれぞれ「upstream」と「Origin」に切り替えたらいいのですが、そうではないと思います。)
フォークにプッシュするときは、次のオプションを試してください:-mirror
https://git-scm.com/docs/git-Push#git-Push---mirror
これは、リモートをローカルリポジトリに取得するためにも、クローン作成時に--mirrorオプションを指定する必要があることを意味する場合があります。
または、リモートセットアップスクリプトをリポジトリに含めて、プロジェクトの開発者セットアップマニュアルで参照することもできます。
リポジトリのローカルコピーを作成する手順(最終的にフォークされたリポジトリを指す)は、詳細に説明したとおりです。
次のステップは、フォークされたリポジトリを作成することです。 git
ではなくGithub API
を使用してコマンドラインから実行できます。詳細については、 https://stackoverflow.com/a/2425632/429758 を参照してください。
その後、手動フォークを完了するのは簡単なgit Push Origin master
です。
注:BitbucketもREST APIを提供しており、コマンドラインからフォークされたリポジトリを作成できます。