私はgithubに公開リポジトリを持っており、私のグループの各ユーザーはそれのフォークを持っています。ポリシーでは、メインリポジトリに直接コミットすることは禁止されており、すべての変更は、メインリポジトリにマージされる前に確認できるように、フォークからのプルリクエストとして受信する必要があります。
メインリポジトリで公開する前に一定期間非公開にする必要があるコードを開発することがあることを考えると、次のような状況が必要です。
現在、Githubでは、プライベートフォークが許可されていないため、これは不可能です。
同様の動作を実現するためにどのような戦略を使用できますか?
私はこれに似た何かをしました。私にとってうまくいった解決策は、メインリポジトリのベアクローンとして新しいプライベートリポジトリを作成し、すべての新しい変更をこのプライベートリポジトリにプッシュし、変更を公開する準備ができたら、変更をにプッシュすることでした。パブリックレポ。
Github UIをprivate-repo
介して新しいリポジトリを作成します(これを呼びましょう)。次に:
git clone --bare https://github.com/exampleuser/public-repo.git
cd public-repo.git
git push --mirror https://github.com/yourname/private-repo.git
cd ..
rm -rf public-repo.git
プライベートリポジトリのクローンを作成して、作業できるようにします。
git clone https://github.com/yourname/private-repo.git cdprivate-repoいくつかの変更を加えるgitcommit git push origin master
3.パブリックリポジトリから新しい変更をプルするには:
cd private-repo
git remote add public https://github.com/exampleuser/public-repo.git
git pull public master # Creates a merge commit
git push origin master
すばらしいことに、プライベートリポジトリには、パブリックリポジトリからの最新のコードと変更が含まれています。
プルリクエストを作成する唯一の方法は、パブリックリポジトリへのプッシュアクセスを持つことです。これは、そこのブランチにプッシュする必要があるためです(理由は次のとおりです)。
git clone https://github.com/exampleuser/public-repo.git
cd public-repo
git remote add private_repo https://github.com/yourname/private-repo.git
git checkout -b pull_request_branch
git pull private_repo master
git push origin pull_request_branch
ここで説明するように、パブリックリポジトリのGithubUIを介してプルリクエストを作成するだけです。
プロジェクトでプルリクエストを確認したら、それをマージできます。
もちろん、プロセス全体を繰り返すことができます(リモートを追加する手順は省略してください)。初めての場合は、必要なリモート(パブリックまたはプライベート)からプルして(プライベート)にプッシュするだけです。変更が完了したら、変更を(private:最新の状態に保つために)パブリックのブランチにプッシュして、マスターへのプルリクエストを作成できるようにします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加