Як ви роздвоюєте власне сховище на GitHub?


164

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


4
Чого саме ви намагаєтесь досягти? Може, ви можете вирішити це, просто розгалуживши?
Artefact2

4
Я хочу отримати копію проекту та розширити цей проект, щоб зробити щось інше, але не впливаючи на оригінальний проект. Це було все. Будь-які способи, це вирішено.
WowBow

1
@ Artefact2 .. Вибачте, я подумав, що рішення mcepl вирішило мою потребу, але це не сталося. Після того, як я клонував проект за допомогою "git clone", я не хочу вказувати на оригінальне репо, а на нове репо на github, яке я створив. Як я можу цього досягти?
WowBow

1
@ Artefact2 Ви отримали мої запитання?
WowBow

1
Користь вилки порівняно зі створенням нового репо полягає в тому, що графіки та історія мережі пов'язані між собою. Шкода, що Github цього не дозволяє.
kenchew

Відповіді:


205

Я не думаю, що ти можеш розпрощати власну репо.
Клонувати його та підштовхувати до нового репо - це добре, але вам потрібно:

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 "

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 у файлі config, він працює добре. Стаття, яку ви мені вказали, показує це.
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 (вийшов у 2016 році) у своїй старій відповіді 2010 року: я додав посилання на цей інструмент та на вашу відповідь.
VonC

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

1
Можна додати, що вам потрібно створити github.com/TargetRepoName.git раніше на GitHub, але крім цього, ця відповідь була моїм першим вибором, і вона спрацювала.
Флоріан Штрауб


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 віддалений додати upstream old_repo.git
  5. git pull upstream master
  6. git push master master

Все вищезгадане я дістав звідси .


1

Щодо розумних технологій з використанням GitHub, ось одне просте рішення як альтернатива іншим чудовим відповідям вище. Вам потрібно лише додаток GitHub Desktop.

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

1

Тепер ви можете позначити базовий сховище як шаблон (у Налаштуваннях позначте його як сховище шаблонів ) і на головній сторінці репо натисніть Використовувати цей шаблон для створення другого репо

Довідка Github: створення сховища шаблонів, створення сховища з шаблону


-1

Просто спробував це, і все спрацювало:

  1. Завантажте репо в обліковий запис організації
  2. Перейменуйте його
  3. Передайте право власності на себе

4
Хороша ідея , але я просто спробував це і є помилка: aspiers already has a repository in the UPSTREAM/NAME network.
Адам Шпіерс

це тому, що тепер вони переспрямовують вас після того, як ви перейменовуєте або передаєте репозицію github.com/blog/1508-repository-redirects-are-here
shadowbq

-1

Створюючи нове репо, ви можете імпортувати з іншого репо за допомогою URL-адреси repo .git. На це мені знадобилося 30 секунд.

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