У вас есть частная ветка публичного репо на GitHub?

128

У меня есть общедоступный проект PHP в репозитории GitHub, который содержит только одну ветку (главную).

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

Имея это в виду, вот мои вопросы:

  1. Могу ли я иметь частный филиал в публичном репо?
  2. Могу ли я вложить собственное публичное репо в свою частную ветку / вилку?
  3. Если оба из вышеперечисленных возможны, какой путь вперед? Если нет, как мне действовать?
ящерица
источник
1
Разве не лучшая идея превратить свой публичный репозиторий в частный репозиторий, где вы создаете несколько веток, которые вы не отправляете (обратно) в публичный репозиторий (и наоборот)?
Леголас
1
Это то, о чем я прошу, я хочу иметь возможность создать копию публичного репо, но мои обновления должны быть приватными (если я не хочу возвращать определенные вещи обратно в публичное)
Lizard
1
24ways.org/2013/…
assylias 06
@assylias, не могли бы вы сформулировать это как ответ? На мой взгляд, это лучший ответ, и я не обратил внимания на ваш комментарий, прежде чем сам нашел статью.
mbh86
@ mbh86 Это не совсем ответ, это ссылка, и у меня нет времени превращать ее в ответ. Но если вы хотите использовать содержимое этой страницы для создания здесь ответа (со ссылкой на исходный сайт), это, безусловно, может помочь другим пользователям, и вы получите мой голос за :-)
assylias

Ответы:

71
  1. Дублируйте свое репо .
  2. Сделайте дублированный репо частным на GitHub.
  3. Клонируйте частное репо на свой компьютер
  4. Добавьте пульт в свое общедоступное репо (git remote add public git@github.com: ...)
  5. Отправляйте ветки с коммитами, предназначенными для вашего публичного репо, на этот новый публичный пульт. (убедитесь, что вы случайно не зафиксировали закрытый код)
  6. Вы можете внести изменения в свое общедоступное репо с помощью git fetch public, а затем объединить их локально и отправить в свое частное репо (удаленный источник).
mj1531
источник
1
У меня дублирование работает нормально, хотя мне пришлось сделать это в обратном порядке, сначала создав частное репо, а затем дублируя публичное репо из командной строки. Спасибо!
Joel
104

Возможно ли иметь частный филиал на публичном репо?

На GitHub ваш репозиторий либо публичный, либо частный; нельзя выборочно «приватизировать» только филиал.

Могу ли я вложить собственное публичное репо в свою частную ветку / вилку?

Вы можете клонировать свое общедоступное репо на локальный компьютер, ветвь по мере необходимости и просто не продвигать свои «частные» ветки вверх по течению (указав, какую ветку отправить в origin: git push origin masterили git push origin branch-i-want-to-be-public:master).

Как лучше всего двигаться вперед / как мне действовать?

Чтобы воспользоваться преимуществами GitHub как для общедоступной, так и для частной разработки, я бы посоветовал создать вашу публичную ветку в GitHub, изменить настройки новой вилки на «Private», а затем клонировать частную версию на локальный компьютер. Когда вы будете готовы сделать изменения общедоступными, отправьте все в свою частную вилку на GitHub, а затем используйте запросы на вытягивание для выборочного копирования веток в общедоступное репо.

Чтобы сделать репозиторий частным на GitHub, у вас должна быть обновленная (платная) учетная запись. Если вы качаете только бесплатную учетную запись, вы все равно можете использовать первый предложенный мной процесс - клонировать общедоступную на локальную машину, ветвь и отправлять определенные «общедоступные» ветки в источник - без необходимости частного репо.

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

Джастин ᚅᚔᚈᚄᚒᚔ
источник
32
GitHub не позволяет делать форк публичного репо приватным. Вам нужно будет продублировать репо, чтобы сделать его приватным, и тогда вы потеряете соединение с публичным репо. Интересно, можете ли вы добавить публичное репо как отдельный пульт к вашему локальному клону частного репо. Затем отправьте ветки на этот пульт.
mj1531 09
3
К сожалению, из этого следует, что невозможно использовать запросы на вытягивание для извлечения изменений из частной «вилки» в публичную копию репозитория.
Michael Mior
6
GitHub теперь предлагает неограниченное количество частных репозиториев для бесплатных аккаунтов.
Натан Ф.
1
Это действительно не лучший ответ, учитывая, что рекомендуемый рабочий процесс (PR от частной вилки) не работает. Ответ @ mj1531 - лучший рабочий процесс.
stewSquared
3

Есть другое решение, которое я считаю лучше, поскольку оно не приводит к дублированию репозиториев на одном компьютере.

  • Создайте ветку с тем, что вам нужно.
  • Сделайте новое репо на GitHub, сделайте его приватным.
  • Добавьте новое репозиторий GitHub в качестве второго пульта дистанционного управления в репозиторий на вашем компьютере.
  • Переместите частную ветку на второй удаленный.

Конечный результат - 1 репозиторий с 2 ​​пультами. 1 публичный, 1 частный.
Просто нужно быть осторожным при выборе соответствующего имени.

Артур Бауэрс
источник
1

1.) Возможно ли иметь частный филиал на публичном репо

Насколько я знаю, нет.

2.) Могу ли я вложить собственное публичное репо в свою частную ветку?

Нет, вы не можете разделить полное репо (1-n веток) на одну ветку. На самом деле вы могли бы, если бы вы просто разветвили одну ветку полного репо. Просто добавьте его как пульт или начните с клона.

Вас также могут заинтересовать разреженные кассы .

3.) Если возможно и то, и другое, что является наилучшим путем.

н /

4.) Если ни то, ни другое невозможно, как мне действовать?

н /

hakre
источник