Как я могу открыть общедоступный репозиторий, но сделать свою вилку приватной? У меня есть подписка на поддержку частных репозиториев.
GitHub: Как сделать вилку общего хранилища приватной?
Ответ 1
Ответы правильные, но не упоминайте, как синхронизировать код между публичным репо и вилкой.
Вот полный рабочий процесс (мы сделали это до открытого источника React Native):
Во-первых, дублируйте репо, как говорили другие (подробнее здесь):
Создайте новое репо (позвоните ему private-repo
) через Github UI. Тогда:
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
Удивительно, ваше частное репо теперь имеет последний код из публичного репо и ваши изменения.
Наконец, для создания запроса на перенос private repo → public repo:
Единственный способ создать запрос на перенос - это получить доступ к публичному репо. Это потому, что вам нужно нажать на ветку там (вот почему).
git clone https://github.com/exampleuser/public-repo.git
cd public-repo
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 для public-repo, как описано здесь.
Как только владельцы проектов просмотрят ваш запрос на тягу, они могут слить его.
Конечно, весь процесс можно повторить (просто оставьте шаги, когда вы добавляете пульты).
Ответ 2
Теперь есть еще один вариант (январь-2015)
- Создайте новое частное репо
- На пустом экране репо есть кнопка "импорт" /кнопка
- щелкните по нему и поместите существующий URL-адрес репозитория github Не упоминается опция github, но она также работает с репозиториями github.
- DONE
Ответ 3
Текущие ответы немного устарели, поэтому для ясности:
Короткий ответ:
- Сделайте голый клон публичного репо.
- Создайте новый закрытый.
- Сделайте зеркальное нажатие на новый закрытый.
Это документировано на GitHub: duplicating-a-repository
Ответ 4
Вам нужно дублировать репо
Вы можете увидеть этот документ (из github)
Чтобы создать дубликат репозитория без наложения, вам нужно запустить специальную команду clone против исходного репозитория и нажать зеркало на новый.
В следующих случаях репозиторий, который вы пытаетесь нажать, например, exampleuser/new-repository или exampleuser/mirrorrored, должен уже существовать в GitHub. Подробнее см. "Создание нового репозитория".
Зеркалирование репозитория
Чтобы сделать точный дубликат, вам нужно выполнить как голый клоун, так и зеркальный щелчок.
Откройте командную строку и введите следующие команды:
$ git clone --bare https://github.com/exampleuser/old-repository.git # Make a bare clone of the repository $ cd old-repository.git $ git push --mirror https://github.com/exampleuser/new-repository.git # Mirror-push to the new repository $ cd .. $ rm -rf old-repository.git # Remove our temporary local repository
Если вы хотите зеркалировать репозиторий в другом месте, включая получение обновлений из оригинала, вы можете клонировать зеркало и периодически нажимать изменения.
$ git clone --mirror https://github.com/exampleuser/repository-to-mirror.git # Make a bare mirrored clone of the repository $ cd repository-to-mirror.git $ git remote set-url --push origin https://github.com/exampleuser/mirrored # Set the push location to your mirror
Как и в случае с голой клон, зеркальный клон включает все удаленные ветки и теги, но все локальные ссылки будут перезаписаны каждый раз, когда вы извлекаете, поэтому он всегда будет таким же, как исходный репозиторий. Настройка URL-адреса для push файлов упрощает нажатие на ваше зеркало. Чтобы обновить свое зеркало, выберите обновления и нажмите, которые можно автоматизировать, запустив задание cron.
$ git fetch -p origin $ git push --mirror
Ответ 5
GitHub теперь имеет опцию импорта, которая позволяет вам выбирать, что вы хотите, ваш новый импортированный репозиторий публичный или приватный