Видаліть залежність вилок із сховища GitHub


206

Як я можу змусити GitHub забути чи роз'єднати, що моє репо спочатку було вилкою іншого проекту?

Я відправив проект у GitHub. Зараз я бачу "роздвоєний з будь-чого / будь-чого". Батьківський сховище «все / що завгодно» більше не підтримується. Мені дозволено продовжувати використовувати кодову базу вихідного сховища для створення незалежного сховища.

Чи є спосіб від'єднати мій проект від оригінального сховища?

Відповіді:


175

Ви можете зв’язатися із службою підтримки github і попросити їх переключити ваш сховище у "нормальний режим".

На цій сторінці параграфа "Здійснення було зроблено виделкою" пояснено, що для переключення потрібно пройти підтримку. Тому, ймовірно, немає способу зробити це самостійно (якщо ви не знищите і не відтворите своє репо, що було пояснено раніше ... якщо ви зробите це обережно, якщо у вашому проекті додаються квитки або вікі, оскільки вони будуть видалити!).


31
Я можу підтвердити, що звернення до служби підтримки працює бездоганно, плюс вони часто відповідають за лічені години :-)
BenC

1
Пов'язана сторінка більше не містить вказаної інформації.
Кара Брайтвелл

3
@MattBrennan Сторінка змінилася, але останній розділ все ще містить: "Щоб вилучити виделку і перетворити її в окремий сховище на GitHub.com або GitHub Enterprise, зв'яжіться зі службою підтримки GitHub або адміністратором вашого веб-сайту відповідно."
Томас Мулард

1
Супер швидкий .. вони відповіли мені за 1 годину. Спасибі
myDoggyWritesCode

2
У Github Enterprise тепер ви можете знайти його під адміністратором-> Співпраця-> Мережа, і залежно від випадку використання ви повинні використовувати "Зробити корінь", "Від'єднати" або "Витягнути".
Куцi

45

Ви можете скопіювати роздвоєний сховище до нового сховища (без залежності вилки) з інтерфейсу github, а потім видаліть оригінальний роздвоєний:

  • Увійдіть до github
  • У верхньому правому куті виберіть знак + та імпортуйте сховище .
  • Імпортуйте своє роздрібнене сховище. Нове сховище не буде залежно від вилки.
  • Видаліть оригінальний, роздвоєний сховище в налаштуваннях сховища.

1
Це було найпростіше, і це для мене працювало :). Дуже розумний.
moxi

1
У кого-небудь ще була проблема з функцією імпорту "висить"? Шахта вже близько 5 годин працює над "Виявленням системи контролю версій вашого проекту ...". Я не впевнений, чи мене чекають у черзі, чи це справжня повістка. Репо невелике. Спокусився залишити це на ніч на випадок, якщо я в черзі.
Веніямін Вест

Нарешті я зацікавився і просто натиснув "скасувати". Якщо натиснути скасувати, це дозволило пропустити виявлення VCS та просто імпортувати код / ​​коміти / гілки тощо. Так було під час імпорту Github -> Github. Імпорт, можливо, не висів, якби я надходив з іншого VCS? Не впевнений. Будь ласка, зверніть увагу на те, що робити це за допомогою другого репо, мені довелося двічі скасувати, щоб воно працювало. Якщо CLI копіює всі ті самі дані, що може бути кращим методом, але сподіваюся, що це допоможе іншим, хто обрав цей маршрут.
Бенджамін Вест

9
Щоб було зрозуміло, такий підхід не дозволить зберегти проблеми та не викликати запитів.
голопот

Працює як шарм! Дякую, що ти рятівник! :)
omnimind

44

Переконайтеся, що у вас є всі важливі гілки та теги на вашому локальному репо, видаліть репортаж github, відтворіть сховище звичайними засобами (без роздрібнення) та відсуньте місцеве сховище назад за допомогою git push --all . Зауважте, що якщо у вас є місцеві відділення, які ви не хочете публікувати, можливо, варто створити тимчасовий чистий локальний клон для операції.

Однак це також позбудеться вікі та проблем. Оскільки вікі насправді є власним сховищем, з ним можна обробляти аналогічно, клонувавши його, а потім відтворити та натиснути. Адреса репо знаходиться на сторінці Git Access у Вікі (git@github.com:user/repo.wiki.git ).

Це залишає проблеми. Їх можна експортувати через API , але, наскільки я знаю, ви можете створювати лише проблеми та коментарі зі своєю людиною, тому імпортувати їх ідеально неможливо.

Отже, якщо вам потрібні проблеми для збереження, вам слід пройти службу підтримки github, як пропонує Томас Мулард.


Залежно від кількості проблем, можливо, можливо, перенести їх по одному в новий сховище, перш ніж видалити зі старого з Інтернету ( help.github.com/en/github/managing-your-work-on- github /… ). Я думаю, що рішуча особа могла б перенести понад 100 випусків на годину - не цікаво, але для багатьох сховищ справа вдається.
Сума

22

У мене виникла подібна проблема, і я вирішив її використати на цій довідковій сторінці github . Я не заперечував про вікі та трекер проблем, як це було для мого блогу, використовуючи тему, люб’язно розроблену іншим користувачем.

Вилучіть роздвоєний репо і використайте його як власний після декількох комісій, не втрачаючи всієї історії:

git clone --bare git@github.com:user/forked_repo.git

Створіть нову порожню репозицію new-repositoryна веб-сайті github. І натисніть дзеркальну версію:

cd user.github.com.git/

git push --mirror git@github.com:user/new-repository.git

Можна перейменувати на github, forked_repositoryінше ім'я, щоб зберегти його як резервне копіювання та перевірити оновлення, якщо потрібно. Або просто видаліть його.

Перейменування new-repositoryоригінальної назви виконує цю роботу. Як побічний ефект, ваші зобов’язання тепер з’являються у вашій історії.


11

Це стосується лише GitHub Enterprise, а не github.com

Увійдіть до облікового запису, який має права адміністратора:

  1. Перейдіть до сховища, яке потрібно від’єднати: https://<ghe url>/<org>/<repo>
  2. Натисніть на ракету "Адміністратор сайту" у верхньому правому куті
  3. Натисніть "Співпраця" у верхній панелі меню
  4. Клацніть на "Мережа" на лівій панелі
  5. Клацніть на «Зробити корінь» на панелі «Структура мережі»
  6. Прийміть

Це було перевірено на GitHub Enterprise 2.9


Залежно від випадку використання, "Detach" або "Extract" може бути більш підходящим. Я вважаю, що "Зробити корінь" трохи дивним, оскільки він в основному переверне поточний напрямок root-> child. (Github Enterprise 2.17)
Kutzi

10

Використовуючи інформацію від Aurelien та Clayton , я зміг це зробити за допомогою наступного:

$ git clone --bare https://github.com/my/forked_repo.git
<delete forked_repo on GitHub>
<recreate repo on GitHub using same name>
$ cd forked_repo.git
$ git push --mirror

Ось документація дляgit clone --bare :

Зробіть оголене сховище Git. Тобто, замість того, щоб створювати <directory>та розміщувати адміністративні файли <directory>/.git, зробіть <directory>себе $GIT_DIR. Це, очевидно, має на увазі -n, оскільки немає де перевірити робоче дерево. Також голови гілок на пульті копіюються безпосередньо у відповідні місцеві гілки філій, не відображаючи їх refs/remotes/origin/. Якщо використовується ця опція, не створюються ані гілки віддаленого відстеження, ані відповідні змінні конфігурації.

Ось документація дляgit push --mirror :

Замість того , щоб називати кожен реф штовхати, вказує , що все рефов під refs/(яка включає в себе , але не обмежуючись ними refs/heads/, refs/remotes/і refs/tags/) бути дзеркальним в віддаленому сховище. Нещодавно створені локальні реферати будуть висунуті до віддаленого кінця, локально оновлені посилання будуть сильно оновлюватися на віддаленому кінці, а видалені рефлекси будуть видалені з віддаленого кінця. Це за замовчуванням, якщо встановлено параметр конфігурації remote.<remote>.mirror.

Зауважте: як і інші gitвідповіді на основі цього, це не буде копіювати питання, які не є частиною gitрепо-репортажу, такими як вікі та проблеми. За тапіо:

  • Вікі - це окремий репо-гіт, з яким можна обробляти аналогічно тапіоні. Адреса: git@github.com:user/repo.wiki.git.
  • Програми можна експортувати за допомогою API GitHub, але є проблеми їх відтворення, оскільки їх може створювати лише ваш користувач, тому імпорт втратить інформацію.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.