Как я могу раскошелиться на публичный репозиторий, но сделать свой форк приватным? У меня есть подписка для поддержки частных репозиториев.
Ответы верны, но не упоминайте, как синхронизировать код между публичным репо и форком.
Вот полный рабочий процесс (мы сделали это до открытия React Native с открытым исходным кодом ):
Сначала продублируйте репозиторий, как сказали другие (подробности здесь ):
Создайте новый репозиторий (давайте назовем его private-repo
) через интерфейс Github . Затем:
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
cd private-repo
make some changes
git commit
git push origin master
Чтобы вытащить новую горячность из публичного репо:
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
Удивительно, ваше частное репо теперь содержит последний код из публичного репо плюс ваши изменения.
Наконец, чтобы создать частное репо с запросом на извлечение -> публичное репо:
Используйте пользовательский интерфейс GitHub для создания форка публичного репо (маленькая кнопка «Fork» в правом верхнем углу страницы публичного репо). Затем:
git clone https://github.com/yourname/the-fork.git
cd the-fork
git remote add private_repo_yourname https://github.com/yourname/private-repo.git
git checkout -b pull_request_yourname
git pull private_repo_yourname master
git push origin pull_request_yourname
Теперь вы можете создать пул-запрос через интерфейс Github для публичного репо, как описано здесь .
После того, как владельцы проекта рассмотрят ваш запрос на извлечение, они могут объединить его.
Конечно, весь процесс может быть повторен (просто пропустите шаги, где вы добавляете пульты).
git clone
установил удаленные ветви отслеживания и, возможно, какую-то другую конфигурацию в клонированном репо, которая вам на самом деле не нужна. В то время как клон --bare просто копирует каталог .git с пульта как есть.git status
показывает все в актуальном состоянии, рабочее дерево чистое, что бы я ни менял. Следовательно, я не могу ничего совершить и подтолкнуть. Я удалил новое частное репо, которое я сделал еще 2 раза, чтобы попытаться сделать это, но продолжал сталкиваться с той же самой проблемой. Какие-либо предложения?Теперь есть еще один вариант (январь-2015)
источник
Текущие ответы немного устарели, поэтому для ясности:
Краткий ответ:
Это задокументировано на GitHub: duplicating-a-repository
источник
Вы должны дублировать репо
Вы можете увидеть этот документ (из GitHub)
https://help.github.com/articles/duplicating-a-repository
источник
GitHub теперь имеет опцию импорта, которая позволяет вам выбирать, что вы хотите, ваш новый импортированный репозиторий публичный или частный
источник