Маєте приватну гілку публічного репо на GitHub?


127

У мене є публічний проект PHP в репортажі GitHub, який містить лише одну гілку (майстер).

Я хочу мати окрему гілку / вилку, яка є приватною для мене (я заплатив за приватні репости GitHub). Я хотів би мати можливість об'єднати зміни від приватного відділення / вилки до громадського репо, і навпаки.

Зважаючи на це, ось мої запитання:

  1. Чи можу я мати приватну філію на публічному репо?
  2. Чи можу я перенести власне публічне репо в свою приватну філію / вилку?
  3. Якщо можливе і вище, і найкращий шлях вперед? Якщо ні, то як мені діяти?

1
Хіба не найкраща ідея розмістити ваше публічне сховище як приватне сховище, де ви створюєте кілька гілок, які ви не натискаєте (назад) до загальнодоступного сховища (і навпаки)?
Леголас

1
Ось, про що я прошу, я хочу мати можливість створити копію публічного репо, але мої оновлення мають бути приватними (якщо я не хочу підштовхувати конкретні речі до загальнодоступних)
Ящірка


@assylias, ти міг би поставити це як відповідь? на мій погляд, це найкраща відповідь, і я не звертав уваги на ваш коментар, перш ніж сам знаходити статтю.
mbh86

@ mbh86 Це насправді не відповідь, це посилання, і я не встигаю перетворити це на відповідь. Але якщо ви хочете використовувати вміст цієї сторінки, щоб створити відповідь тут (із посиланням на оригінальний сайт), це, безумовно, може допомогти іншим користувачам, і ви отримаєте мою нагоду :-)
assylias

Відповіді:


69
  1. Скопіюйте репо .
  2. Зробіть дублюване репо-приватне приватним на GitHub.
  3. Клоніруйте приватне репо на вашій машині
  4. Додайте пульт до публічного репо (git remote add public git@github.com: ...)
  5. Відправляйте гілки з комісіями, призначеними для вашого публічного репо, до цього нового загальнодоступного пульта. (переконайтеся, що ви випадково не вводите лише приватний код)
  6. Ви можете внести зміни до свого загальнодоступного репо, використовуючи "git fetch public", а потім об'єднати їх на локальному рівні та натиснути на ваше приватне репо (віддалений вихід).

Дублювання працює для мене чудово, хоча мені довелося це робити у зворотному порядку, спочатку створивши приватне репо, а потім дублюючи там публічне репо з командного рядка. Дякую!
Джоель

104

Чи можливо мати приватне відділення на публічному репо?

У GitHub ваше сховище є приватним або приватним; ви не можете вибірково "приватизувати" лише галузь.

Чи можу я перенести власне публічне репо в свою приватну філію / вилку?

Ви можете клонувати своє публічне репо на локальну машину, відділення за потребою та просто не натискати свої "приватні" гілки вгору за течією (вказавши, яку гілку потрібно натиснути на походження: git push origin masterабо git push origin branch-i-want-to-be-public:master).

Який найкращий шлях вперед / як слід діяти?

Для того, щоб скористатися GitHub як для вашого публічного, так і для приватного розвитку, я б запропонував перенести вашу публічну філію в GitHub, змінити налаштування нового вилка на "Приватне", а потім клонувати приватну версію до локальної машини. Коли ви будете готові оприлюднити зміни, пересуньте все до свого приватного вила на GitHub, а потім використовуйте запити на витяг, щоб вибірково копіювати гілки в загальнодоступне репо.

Щоб зробити сховище приватним на GitHub, у вас повинен бути оновлений (платний) рахунок. Якщо ви просто розгойдуєте безкоштовний акаунт, ви все одно можете скористатись першим запропонованим мною процесом - клонуйте публічне до місцевої машини, відділення та підштовхуйте певні "загальнодоступні" гілки до походження - не потребуючи приватного репо.

Якщо у вас є платний обліковий запис GitHub або ви використовуєте інший сервіс, який пропонує публічні та приватні вилки та витягує запити (наприклад, BitBucket ), ви можете використовувати будь-який із перерахованих вище підходів, щоб зробити ваш код загальнодоступним.


32
GitHub не дозволяє робити вилки з публічної репо приватної. Вам потрібно буде дублювати репо, щоб зробити його приватним, і тоді ви втратите з’єднання з громадським репо. Цікаво, чи можете ви додати публічне репо як окремий пульт до вашого локального клону приватного репо. Потім натисніть гілки на цей пульт.
mj1531

3
На жаль, сенс цього полягає в тому, що неможливо використовувати запити на витягування, щоб перетягувати зміни з приватного "вила" до публічної копії сховища.
Майкл Міор

6
Тепер GitHub пропонує безлімітні приватні сховища для безкоштовних акаунтів.
Натан Ф.

1
Це дійсно не повинно бути головною відповіддю, враховуючи те, що рекомендований робочий процес (PR від приватної вилки) не працює. Відповідь @ mj1531 - це кращий робочий процес.
stewSquared

2

Є ще одне рішення, яке я вважаю кращим, оскільки це не призводить до повторних повторних робіт на одній машині.

  • Зробіть гілку з речей, які ви хочете приватними.
  • Зробіть нове репо на GitHub, встановіть його на приватне.
  • Додайте нове репортаж GitHub у якості другого пульта до репо на вашій машині.
  • Натисніть приватну гілку на другу віддалену.

Кінцевий результат - 1 сховище з 2 видаленнями. 1 публічний, 1 приватний.
Просто потрібно бути обережним, про що ви наполягаєте, щоб відповідно назвати його.


1

1.) Чи можливо мати приватне відділення на публічному репо

З того, що я знаю, ні.

2.) Чи можу я направити власне публічне репо в свою приватну філію

Ні, ви не можете розв'язати повне репо (1-п гілок) в одну гілку. Ну насправді ти міг би, якби ти просто роздвоюєш одну гілку повного репо. Просто додайте його як віддалений або почніть з клону.

Можливо, вас також зацікавлять розріджені каси .

3.) Якщо можливі обидва вищезгаданих, це найкращий шлях вперед

н / в

4.) Якщо жодне з можливих не можливе, як мені діяти?

н / в

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.