GitHubにパブリックリポジトリのプライベートブランチがありますか?


126

GitHubリポジトリにパブリックPHPプロジェクトがあり、ブランチ(マスター)が1つだけ含まれています。

プライベートな別のブランチ/フォークを用意したい(プライベートGitHubリポジトリに支払い済み)。プライベートブランチ/フォークからパブリックリポジトリへの変更、およびその逆の変更をマージできるようにしたいと思います。

それを念頭に置いて、ここに私の質問があります:

  1. パブリックリポジトリにプライベートブランチを作成できますか?
  2. 自分のパブリックリポジトリを自分のプライベートブランチ/フォークにフォークできますか?
  3. 上記の両方が可能である場合、どちらが最善の方法ですか?どちらでもない場合、どうすればよいですか?

1
パブリックリポジトリをプライベートリポジトリとしてフォークし、パブリックリポジトリにプッシュ(バック)しない(またはその逆)ブランチをいくつか作成するのは、最良の方法ではありませんか?
レゴラス

1
それが私が求めていることです、私は公開リポジトリのコピーを作成できるようにしたいのですが、私の更新は非公開にしたいです(特定のものを公開のものに戻したいのでない限り)
リザード


@assylias、答えにしてくれませんか?私の意見ではそれが最良の答えであり、自分で記事を見つけるまではコメントに注意を払いませんでした。
mbh86

@ mbh86リンクではなく、実際の答えではありません。答えに変える時間はありません。しかし、そのページのコンテンツを使用してここで(元のサイトへの参照を使用して)回答を作成する場合、それは確かに他のユーザーを助け、私の
賛成票

回答:


69
  1. リポジトリを複製します
  2. 複製したリポジトリをGitHubのプライベートリポジトリにします。
  3. プライベートレポをマシンにクローンします
  4. リモートを公開リポジトリに追加します(git remote add public git@github.com:...)
  5. パブリックリポジトリ用のコミットでブランチをその新しいパブリックリモートにプッシュします。(誤ってプライベートのみのコードをコミットしないようにしてください)
  6. 'git fetch public'を使用してパブリックリポジトリに変更を取り込み、ローカルでマージしてプライベートリポジトリ(オリジンリモート)にプッシュできます。

複製はうまくいきましたが、逆の順序で行う必要がありました。最初にプライベートリポジトリを作成し、次にコマンドラインからパブリックリポジトリを複製しました。ありがとう!
Joel

103

パブリックリポジトリにプライベートブランチを置くことはできますか?

GitHubでは、リポジトリはパブリックまたはプライベートです。ブランチだけを選択的に「民営化」することはできません。

自分のパブリックリポジトリを自分のプライベートブランチ/フォークにフォークできますか?

あなたは、必要に応じて、ローカルマシンにブランチをあなたの公開レポのクローンを作成し、単にあなたの「プライベート」の枝を上流プッシュすることはできません(指定している:プッシュへの分岐原点にgit push origin mastergit push origin branch-i-want-to-be-public:master)。

最善の方法はどれですか/どのように進めればよいですか?

パブリック開発とプライベート開発の両方でGitHubを利用するには、GitHub内のパブリックブランチをフォークし、新しいフォークの設定を「プライベート」に変更して、プライベートバージョンをローカルマシンに複製することをお勧めします。変更を公開する準備ができたら、すべてをGitHubのプライベートフォークにプッシュし、プルリクエストを使用してブランチをパブリックリポジトリに選択的にコピーします。

GitHubでリポジトリを非公開にするには、アップグレード(有料)アカウントが必要です。無料のアカウントを揺さぶるだけの場合でも、私が提案した最初のプロセスを使用できます。プライベートリポジトリを必要とせずに、ローカルマシンにパブリッククローンを作成し、特定の「パブリック」ブランチをオリジンにプッシュします。

有料のGitHubアカウントを持っている場合、またはパブリックおよびプライベートフォークとプルリクエストを提供する別のサービス(BitBucketなど)を使用している場合は、上記のいずれかの方法を使用してコードをパブリックにすることができます。


32
GitHubでは、パブリックリポジトリのフォークをプライベートにすることはできません。リポジトリを複製してプライベートにすると、パブリックリポジトリへの接続が失われます。プライベートリポジトリのローカルクローンに、パブリックリポジトリを別のリモートとして追加できるかどうか疑問に思います。次に、そのリモートにブランチをプッシュします。
mj1531 2013年

3
残念ながら、これは、プルリクエストを使用して、変更をプライベートな「フォーク」からリポジトリのパブリックコピーにプルすることができないことを意味します。
Michael Mior

6
GitHubは無料アカウントに無制限のプライベートリポジトリを提供するようになりました。
Nathan F.

1
推奨ワークフロー(プライベートフォークからのPR)が機能しないことを考えると、これは本当にトップの答えではありません。@ mj1531の答えは、より優れたワークフローです。
stewSquared

2

同じマシンでレポジトリが重複しないようにするため、別の解決策があります。

  • プライベートにしたいものでブランチを作成します。
  • GitHubに新しいリポジトリを作成し、プライベートに設定します。
  • 新しいGitHubリポジトリを2番目のリモートとしてマシンのリポジトリに追加します。
  • プライベートブランチを2番目のリモートにプッシュします。

最終結果は、2つのリモートを持つ1つのリポジトリです。パブリック1つ、プライベート1つ。
どちらにプッシュするかに注意する必要があるので、それに応じて名前を付けてください。


1

1.)パブリックリポジトリにプライベートブランチを置くことは可能ですか

私が知っていることから、違います。

2.)自分のパブリックリポジトリを自分のプライベートブランチにフォークできますか?

いいえ、完全なレポ(1-nブランチ)を単一のブランチにフォークすることはできません。フルリポジトリの1つのブランチをフォークするだけで、実際にできます。リモートとして追加するか、クローンから開始するだけです。

まばらなチェックアウトにも興味があるかもしれません。

3.)上記の両方が可能な場合、これが最善の方法です

なし

4.)どちらも不可能な場合、どうすればよいですか?

なし

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