Как вы разворачиваете свой собственный репозиторий на GitHub?


165

У меня есть публичный репозиторий на GitHub. Я хочу скопировать / скопировать его и работать над новым проектом, основанным на этом хранилище, но я не хочу влиять на то, как оно сейчас. Я пытался разветвлять его с помощью интерфейса GitHub, но ничего не получалось.


4
Что именно вы пытаетесь достичь? Может быть, вы можете решить это, просто разветвившись?
Артефакт2

5
Я хочу получить копию проекта и расширить этот проект, чтобы сделать что-то еще, но не затрагивая оригинальный проект. Вот и все. Любыми способами, это решено.
WowBow

1
@ Artefact2 .. Извините, я думал, что решение mcepl решило мою проблему, но это не так. После клонирования проекта с использованием «git clone» я не хочу указывать на исходное репо, а на новое репозиторий на github, который я создал. Как я могу этого достичь?
WowBow

1
@ Artefact2 Ты получил мои вопросы?
WowBow

2
Преимущество fork по сравнению с созданием нового репо заключается в том, что графики и история сети связаны между собой. Жаль, что Github не позволяет этого.
Кенчев

Ответы:


206

Я не думаю, что вы можете раскошелиться на свой репо.
Клонировать его и перенести в новый репозиторий - это хорошо, но вам необходимо:

git clone https://github.com/userName/Repo New_Repo
cd New_Repo
git remote set-url origin https://github.com/userName/New_Repo
git remote add upstream https://github.com/userName/Repo
git push origin master
git push --all

(см. git push)

Смотрите весь процесс, описанный в разделе « Разрабатывайте свой собственный проект на GitHub ».


Спустя шесть лет (2016) у вас теперь есть импортер GitHub, который позволяет вам импортировать репо из другого источника ... включая GitHub.
См. « Импорт репозитория с помощью GitHub Importer »

https://help.github.com/assets/images/help/importer/import-repository.png

НАРФ «ы ответ (upvoted) также иллюстрирует этот процесс.

Это позволит вам создать новый репозиторий и импортировать полную историю старого в новый, используя его URL-адрес GitHub.

Опять же: вы получаете копию, а не настоящий форк: вы не можете сделать запрос на извлечение из нового репо к старому.

Снова (бис), как указано в комментариях по mpersico, это не ИСТИНА FORK.

Если у меня есть foo, который является каноническим исходным репозиторием для проекта с открытым исходным кодом, который я хочу, чтобы другие люди раскошелились и имели доступ к PR, тогда я не хочу работать в этом репо, я хочу использовать форк, который можно использовать для выдачи правильные пиары против моего проекта.
Я решил это, создав вторую учетную запись в GitHub и ответив на это.


Спасибо @VonC. Я думаю, что вы забыли упомянуть редактирование файла конфигурации.
WowBow

1
Я говорил о .git / config. Если вы не измените URL источника, когда вы скажете «git remote add ....», он отклонит вас, потому что имя источника уже существует. Но как только я изменил URL в файле конфигурации, он работает нормально. Статья, которую вы указали мне, показывает это.
WowBow

7
@WowBow, если remoteуже существует, тогда сделайте git remote set-url origin https://github.com/userName/New_Repo. Это изменит .git/configфайл для вас. См. Git-scm.com/docs/git-remote
VonC

1
@aus, что ожидается для вас, чтобы получить от вверх по течению. См. Stackoverflow.com/a/33360766/6309
VonC

1
Я все еще чувствую, что форкинг от репо в той же организации должен быть разрешен. Что если есть центральный репозиторий, общий для всех, и вы хотите получать от него обновления все время и в то же время вносить конкретные изменения в свою раздвоенную копию в соответствии с вашими потребностями?
Прачи

107

Супер простой способ сделать это за 30 секунд с сайта GitHub:

  1. Скопируйте URL вашего репо. Пример: https://github.com/YourName/YourOldRepo(подсказка: это URL, когда вы смотрите на главной странице вашего репо на github.
  2. Нажмите на +значок в правом верхнем углу.
    https://i.stack.imgur.com/9zJgo.png
  3. Выберите «Импортировать репозиторий».
  4. Там, где запрашивается «Старый URL», вставьте URL, скопированный на шаге 1
    https://i.stack.imgur.com/vgWd3.png
  5. Введите имя вашего нового репо и нажмите Begin Import.
  6. Это оно! Теперь у вас есть копия полного репо со всей историей коммитов и ветками!

Ограничения: На самом деле это не настоящий форк. Это копия репо. Это не позволит делать запросы на возврат и обратно.


4
Я забыл GitHub Importer (выпущенный в 2016 году) в своем старом ответе 2010 года: я добавил ссылку на этот инструмент и на ваш ответ.
VonC

10
  1. git clone https://github.com/YOURREPO.git TargetRepoName
  2. cd TargetRepoName /
  3. Git Remote Set-URL происхождения https://github.com/TargetRepoName.git
  4. git push -u мастер оригинала

1
Можно добавить, что вам нужно создать github.com/TargetRepoName.git до этого на GitHub, но, кроме этого, этот ответ был моим первым выбором, и он работал.
Флориан Штрауб

5

Самый простой способ добиться желаемого эффекта - создать новый репозиторий, затем выбрать опцию импорта и указать URL-адрес репо, который вы хотите раскошелиться.

Изображения ниже помогут:

Форк собственного репо через import-1

Форк собственного репо через import-2


4

Просто клонируйте его, создайте новый пустой репо и нажмите на него.


1
Спасибо. Я слишком много думал.
WowBow

Я клонировал его на свой локальный компьютер и создал пустое хранилище, но при попытке git origin github.com/userName/New_Repo.git .. он говорит, что удаленный источник уже существует. Как мне решить это?
WowBow

И теперь, когда я нажимаю, меняется первоначальный репо.
WowBow

Подскажите, пожалуйста, как продвигаться к новому репо? Я сделал клон и создал новый репо, но я не мог подтолкнуть к новому репо.
WowBow

5
Вы должны изменить пульты. В противном случае он попытается нажать на то же место. git remote rm originзатемgit remote add origin URL-to-new-repository
wadesworld

1

Я следовал этим официальным инструкциям для «Дублирования репозитория», и это, похоже, сработало.

https://help.github.com/articles/duplicating-a-repository/

Чтобы создать дубликат репозитория без разветвления, вам нужно запустить специальную команду клонирования против исходного репозитория и зеркально переместить в новый. Это работает с любым Git-репозиторием, а не только с GitHub.


1

Принятое решение VonC, к сожалению, у меня не сработало

удаленный: хранилище не найдено

То, что работало, было следующим:

  1. Создайте new_repo на github
  2. git clone new_repo
  3. cd new_repo
  4. Git Remote добавить вверх по течению old_repo.git
  5. git pull upstream master
  6. мастер происхождения git push

Я получил все вышеперечисленное отсюда .


1

Для не технически подкованного использования GitHub, вот одно простое решение в качестве альтернативы другим отличным ответам выше. То, что вам нужно, это просто приложение GitHub Desktop.

  1. Откройте свой собственный репозиторий проекта из браузера и загрузите в формате ZIP, например your-project-master.zip.
  2. Разархивируйте и переименуйте его как новый репо.
  3. Откройте GitHub Desktop и добавьте новое репо, просмотрев его по разархивированному локальному пути нового репо. введите описание изображения здесь
  4. Опубликуйте его на своем github, нажав кнопку публикации. Не забудьте добавить название и описание :)

1

Теперь вы можете пометить базовый репозиторий как шаблон (в настройках пометить его как репозиторий шаблонов ) и на главной странице репо нажать кнопку « Использовать этот шаблон», чтобы создать свой второй репозиторий.

Github Help: создание репозитория шаблонов создание репозитория из шаблона


-1

Только что попробовал, и это сработало:

  1. Создайте репо в учетной записи организации
  2. Переименовать его
  3. Передать право собственности обратно себе

4
Хорошая идея, но я только что попробовал это и получил ошибку aspiers already has a repository in the UPSTREAM/NAME network.
Адам Спирс

это потому, что у них теперь есть перенаправления после того, как вы переименуете или
передадите

-1

Когда вы создаете новое репо, вы можете импортировать из другого репо с помощью .git url репо. Это заняло у меня 30 секунд.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.