Як змінити, для якого проекту GitHub я розлучався?


77

Я роздвоїв проект, вніс деякі зміни та отримав запит на витяг. Але тепер проект, який я розгалужив, перейшов до іншого сховища і є форком цього сховища.

Це:

Original -> MyFork

Зараз:

NewOriginal -> Original -> MyFork

Як би я дійшов до наступного?

NewOriginal -> MyFork

40
Прийнята відповідь дає обхідний шлях, але насправді не відповідає на основне питання, як змінити метадані "forked from" на самому GitHub. Мене цікавить те саме.
Метью Флашен

Відповіді:


58

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

git remote set-url upstream git://example.com/NewOriginal.git

Залежно від того, який хост ви використовуєте (тобто де знаходиться ваша форка), можуть бути додаткові внутрішні посилання, які ви не зможете змінити так легко. Наприклад, на Github, вилка безпосередньо пов'язана з оригіналом, з якого ви форкували. У цьому випадку вам потрібно знову розгалужити новий проект і працювати з новою вилкою.

Однак у цьому випадку ви можете легко змінити URL -адресу сховища джерел , і просто всуньте все, що ви змінили раніше у вашій старій вилці, у свою нову вилку.


12
зазвичай називається пульт для сховища, що стоїть вище,origin
knittl

7
@knittl: Неправда, вищезберігаюче сховище - це оригінальне сховище, на якому базується форк. Origin - це ваше загальнодоступне сховище, з якого ви клонували, тобто форк.
тикати

2
що‽ якщо ви клонуєте сховище, гілки цього сховища будуть доступні через originпульт. url originвіддаленого - це url, з якого було клоновано. upstreamза замовчуванням у git
knittl

5
@knittl: Ніколи не говорив, що він був там за замовчуванням, але зазвичай ви додаєте оригінальний проект, а також новий пульт дистанційного керування, який називається вгору за течією , щоб ви могли фактично оновити свою форк з оригінального проекту ...
тикайте

5
Це правильно для git, але не для GitHub. Ця відповідь є правильною для GitHub.
Ян

69

ПРИМІТКА . Наступне рішення є неповним, оскільки ви втратите весь вміст вікі та проблеми, що стосуються вашої форки.

Ви можете досягти цього, виконавши такі дії:

  1. Витягніть усі гілки та теги з існуючої вилки.
  2. Видаліть свій репозиторій на GitHub.
  3. Вилка з нового сховища.
  4. За потреби оновіть віддалену URL-адресу .
  5. Видаліть усі ваші локальні гілки та теги до нового сховища.

8
Це правильна відповідь на поставлене запитання - OP повинен змінити погляд github на "батька", тому, коли він видає запити на витягування, вони переходять до нового батька, а не до старого. Здається, єдиною відповіддю є видалення сховища та форка заново.
Ефір

34
Це вирішення проблеми з відсутністю функції у github.
abergmeier

2
Такий ганебний github все ще не має приємнішого робочого процесу для цього.
Ashimema

2
Можливо, варто додати, що там розміщені сценарії, що дозволяють мігрувати проблеми з репозиторію github на сховище, і що, оскільки вікі
Github

Дякую! Але чи можете ви показати команди git, як насправді виконувати ці дії? В ідеалі, включаючи розгалуження та відновлення вікі Github? А @Ashimema, чи можете ви зробити посилання на хороші сценарії для міграції проблем?
nealmcb

9

Оновіть віддалену URL-адресу у своєму сховищі:

git remote set-url origin <url to NewOriginal, e.g. git://…/bla.git>

3
Це не спрацює. Для OP все ще потрібно встановити джерело MyFork, щоб він міг робити запити щодо NewOriginal, коли він просуне свої зміни до MyFork на GitHub. У нього немає доступу до запису до NewOriginal, тому встановлення початкового значення для цього призведе до того, що його натискання не пройдуть.
Guy

2

Припускаючи, що ви виконали належне розгалуження та додавання вгору за течією, див. GithubHelpOnFork ; щоб просто змінити вихідну URL-адресу, зробіть:

  1. перевірте, як виглядає ваш поточний висхідний код та походження:

    git remote -v
    
  2. якщо ви бачите список вище за течією, і ви хочете просто змінити його URL-адресу, зробіть те, що запропонував @poke (якщо не перейти за посиланням helpGithub вище, щоб додати нове вище):

    git remote set-url upstream git://example.com/NewOriginal.git
    
  3. потім переконайтеся, що висхідний потік вказує на нову URL-адресу

    git віддалений -v

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