Memiliki cabang pribadi dari repo publik di GitHub?

128

Saya memiliki proyek PHP publik dalam repo GitHub, yang hanya berisi satu cabang (master).

Saya ingin memiliki cabang / garpu terpisah yang bersifat pribadi untuk saya (saya telah membayar untuk repo GitHub pribadi). Saya ingin menggabungkan perubahan dari cabang / garpu pribadi ke repo publik, dan sebaliknya.

Dengan mengingat hal itu, inilah pertanyaan saya:

  1. Bisakah saya memiliki cabang pribadi di repo publik?
  2. Dapatkah saya membagi repo publik saya sendiri ke cabang / garpu pribadi saya?
  3. Jika kedua hal di atas memungkinkan, manakah cara terbaik untuk maju? Jika tidak ada, bagaimana saya harus melanjutkan?
Kadal
sumber
1
Bukankah ide terbaik untuk membagi repositori publik Anda sebagai repositori pribadi, di mana Anda membuat beberapa cabang yang tidak Anda dorong (kembali) ke repositori publik (dan sebaliknya)?
Legolas
1
Itulah yang saya tanyakan, saya ingin dapat membuat salinan repo publik tetapi pembaruan saya menjadi pribadi (kecuali saya ingin mendorong hal-hal tertentu kembali ke publik)
Lizard
1
24ways.org/2013/…
assylias
@assylias, bisakah Anda menjelaskannya sebagai jawaban? itu jawaban terbaik menurut saya, dan saya tidak memperhatikan komentar Anda sebelum menemukan artikel itu sendiri.
mbh86
@ mbh86 Ini sebenarnya bukan jawaban, menjadi tautan, dan saya tidak punya waktu untuk mengubahnya menjadi jawaban. Tetapi jika Anda ingin menggunakan konten halaman itu untuk membuat jawaban di sini (dengan referensi ke situs asli), itu pasti bisa membantu pengguna lain dan Anda akan mendapatkan upvote saya :-)
assylias

Jawaban:

69
  1. Gandakan repo Anda .
  2. Buat repo duplikat menjadi pribadi di GitHub.
  3. Kloning repo pribadi ke mesin Anda
  4. Tambahkan remote ke repo publik Anda (git remote add public [email protected]: ...)
  5. Dorong cabang dengan komitmen yang ditujukan untuk repo publik Anda ke remote publik baru itu. (pastikan Anda tidak menggunakan kode khusus pribadi secara tidak sengaja)
  6. Anda dapat membawa perubahan ke repo publik Anda menggunakan 'git fetch public' dan kemudian menggabungkannya secara lokal dan mendorong ke repo pribadi Anda (asal jarak jauh).
mj1531
sumber
Duplikasi berfungsi dengan baik untuk saya, meskipun saya harus melakukannya dalam urutan yang berlawanan, pertama-tama membuat repo pribadi dan kemudian menduplikasi repo publik di sana dari baris perintah. Terima kasih!
Joel
104

Apakah mungkin memiliki cabang pribadi di repo publik?

Di GitHub, repositori Anda bersifat publik atau privat; Anda tidak dapat secara selektif "memprivatisasi" hanya sebuah cabang.

Dapatkah saya membagi repo publik saya sendiri ke cabang / garpu pribadi saya?

Anda dapat mengkloning repo publik Anda ke mesin lokal, bercabang sesuai kebutuhan, dan tidak mendorong cabang "pribadi" Anda ke atas (dengan menentukan cabang mana yang akan didorong ke asal: git push origin masteratau git push origin branch-i-want-to-be-public:master).

Manakah cara terbaik untuk maju / bagaimana saya harus melanjutkan?

Untuk memanfaatkan GitHub untuk pengembangan publik dan pribadi Anda, saya sarankan untuk membuat cabang publik Anda di GitHub, mengubah pengaturan garpu baru ke "Pribadi", dan kemudian mengkloning versi pribadi ke mesin lokal Anda. Saat Anda siap untuk membuat perubahan menjadi publik, dorong semuanya ke garpu pribadi Anda di GitHub dan kemudian gunakan permintaan tarik untuk menyalin cabang secara selektif ke repo publik.

Untuk membuat repositori menjadi pribadi di GitHub, Anda harus memiliki akun yang ditingkatkan (berbayar) . Jika Anda hanya menggunakan akun gratis, Anda masih dapat menggunakan proses pertama yang saya sarankan - mengkloning publik ke mesin lokal, cabang, dan mendorong cabang "publik" tertentu ke asalnya - tanpa memerlukan repo pribadi.

Jika Anda memiliki akun GitHub berbayar, atau menggunakan layanan lain yang menawarkan garpu publik dan privat serta permintaan tarik (seperti BitBucket ), Anda dapat menggunakan salah satu pendekatan di atas untuk menjadikan kode Anda publik.

Justin ᚅᚔᚈᚄᚒᚔ
sumber
32
GitHub tidak mengizinkan Anda untuk membuat percabangan dari repo publik menjadi pribadi. Anda harus menduplikasi repo untuk menjadikannya privat, dan kemudian Anda akan kehilangan koneksi ke repo publik. Saya ingin tahu apakah Anda dapat menambahkan repo publik sebagai remote terpisah ke klon lokal Anda dari repo pribadi. Kemudian dorong cabang ke remote itu.
mj1531
3
Implikasi dari hal ini sayangnya adalah tidak mungkin menggunakan permintaan tarik untuk menarik perubahan dari "garpu" pribadi ke salinan publik dari repositori.
Michael Mior
6
GitHub sekarang menawarkan repositori pribadi tak terbatas ke akun gratis.
Nathan F.
1
Ini seharusnya tidak menjadi jawaban teratas karena alur kerja yang direkomendasikan (PR dari garpu pribadi) tidak berfungsi. Jawaban dari @ mj1531 adalah alur kerja yang lebih baik.
stewSquared
3

Ada solusi lain yang menurut saya lebih baik karena tidak menghasilkan repo duplikat pada mesin yang sama.

  • Buatlah cabang dengan barang yang Anda inginkan menjadi pribadi.
  • Buat repo baru di GitHub, setel ke pribadi.
  • Tambahkan repo GitHub baru sebagai remote kedua ke repo Anda di komputer Anda.
  • Dorong cabang pribadi ke remote kedua.

Hasil akhirnya adalah 1 repositori dengan 2 remote. 1 publik, 1 pribadi.
Hanya perlu berhati-hati tentang mana yang Anda dorong agar namanya sesuai.

Arthur Bowers
sumber
1

1.) Apakah mungkin memiliki cabang pribadi di repo publik

Dari apa yang saya tahu, tidak.

2.) Dapatkah saya membagi repo publik saya sendiri ke dalam cabang pribadi saya

Tidak, Anda tidak dapat membagi repo penuh (cabang 1-n) menjadi satu cabang. Sebenarnya Anda bisa, jika Anda hanya bercabang satu cabang dari repo penuh. Cukup tambahkan sebagai remote atau mulai dari klon.

Anda mungkin juga tertarik dengan pembayaran Sparse .

3.) Jika kedua hal di atas adalah mungkin yang merupakan cara terbaik untuk maju

t / a

4.) Jika tidak ada yang memungkinkan, bagaimana saya harus melanjutkan?

t / a

hakre
sumber