Як оновити репо форту GitHub у веб-інтерфейсі?


58

У мене є сховище Github, яке я відправив від іншого проекту кілька місяців тому. Зараз це вже через кілька місяців і оригінальний головний репо змінився. Я хотів би оновити своє репо, щоб відобразити ці зміни. Чи можливо це у веб-інтерфейсі Github? Або мені просто потрібно видалити репо і повторно розщедрити його?




Відповіді:


43

Ви можете спробувати змінити, як трапляються запити.

  1. Ідіть до роздрібнення
  2. Надішліть запит на видалення

    За замовчуванням це буде ваша вилка праворуч ( head repo ) з проханням натиснути на її зобов'язання та змінити початковий репо ( базовий репо ) зліва.

  3. Клацніть спадне меню як для базового репо, так і для головного репо і виберіть репост один одного.

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

    виделка, зроблена над собою

  4. Надішліть запит на витяг

    Якщо ваша вилка не змінилася, ви зможете автоматично прийняти злиття.

Якщо ваш код якимось чином суперечить або недостатньо чистий, це не вдасться оновити через веб-інтерфейс GitHub, і вам потрібно буде схопити код і вирішити будь-які конфлікти на вашій машині, перш ніж натиснути назад на вашу вилку.


3
Це все ще працює, але так, це не ідеально. Це, безумовно, лише хитрість. Не правильний спосіб це зробити.
Джейк Вілсон

3
Підтвердили погану думку. Це забруднює сховище таким чином, що Github пропонує вам витягнути запит із порожнім доступом до оригінального проекту. Дивіться, наприклад, github.com/dthommes/RoboSpring/pull/3 - Колись я сприяв цьому, тоді я синхронізував, і тепер Github хоче, щоб я надіслав комісію "Синхронізація моєї вилки", позначену як "Об'єднати запит на витяг №1 від dthommes / master … "
usr-local-ΕΨΗΕΛΩΝ

1
Я не думаю, що це більше працює. Хоча це здається дивним, не існує простого способу зробити це.
Тобі Аллен

1
Я просто спробував це, і це не відразу здалося, що це спрацювало - при зміні одного з вил негайно відкрилася сторінка «Порівняння змін». Але натискання посилання "порівняти по вилах" дозволило змінити іншу вилку. Можливо, ви могли б додати щось до цього ефекту у своїй відповіді.
Пітер Мортенсен

4
GitHub повинен додати кнопку "Sync Fork", щоб вам не потрібно було створювати мільйон PR-кодів. Зараз я використовую командний рядок для оновлення моїх вилок
Suici Doga,

22

Це буде легше.

  1. Перейдіть до Forked Repo (ваш) та просто натисніть кнопку - "Новий запит на потягу".
  2. На сторінці, що відкривається, є невелике посилання на "перемикання бази" в повідомленні під випадаючими виборами. Клацніть посилання.
  3. Тепер це автоматично призведе до вашого оригінального репо. Клацніть кнопку Створити запит на запит і напишіть повідомлення про фіксацію
  4. Тепер це автоматично призведе до вашого роздвоєного репо, натисніть Об’єднати запит на потягнення та Підтвердити об'єднання, щоб закінчити.

Ви повинні уточнити, що це за зелені кнопки, і це буде чудовою реакцією ....
Родріго Грача

Це, безумовно, найкраща відповідь станом на 4/2016.
dr01

7
Проблема цього методу полягає в тому, що він додає додаткових зобов’язань вашій гілці, тому він насправді не синхронізується з репо- версією за течією.
Мотті

@Mottie Чи існує спосіб, щоб ми дізналися, чи знаходиться наша вилка за останньою версією за течією, і побачити різні зміни, не фактично їх тягнути?
Sujay Phadke

1
@SujayPhadke На вашій головній роздвоєній сторінці репо під кнопкою вибору гілки буде повідомлення "Ця гілка xx здійснює позаду xxxx: master." Що стосується перегляду різниці, в тому ж рядку, що і повідомлення, є кнопка "порівняти"; або ви можете перейти за цим посиланням:https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
Mottie

3

Як оновити роздвоєний репортаж GitHub зі змінами віддаленого сховища


Інструкції з довідки GitHub:

Налаштування віддаленої вилки

Синхронізація вилки


Інструкції з налаштування / експлуатації:

Відкрийте Git Bash (Windows) або Linux / Mac Terminal

Якщо ви ще не клонували ваш сховище, ви повинні перейти в робочий каталог своєї папки розробки та клонувати його на свою робочу станцію.

$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git

Перейдіть до робочого каталогу вашого роздвоєного репо на робочій станції.

$ cd /user/development/my_forked_repo/

Перелічіть поточний налаштований віддалений сховище для вашої вилки.

 $ git remote -v

origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

Вкажіть нове віддалене сховище вище, яке буде синхронізоване з виделкою.

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

Перевірте нове сховище, яке ви вказали для своєї вилки.

$ git remote -v

origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

Отримайте гілки та їх відповідні комісії із сховища вище. Коміти для управління будуть зберігатися в локальній філії, вище за потоком / master.

$ git fetch upstream

remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master

Ознайомтесь з місцевим головним відділенням вашого вила.

$ git checkout master

Switched to branch 'master'

Об’єднайте зміни від верхнього / поточного до свого головного відділення. Це приводить основну гілку вашого fork у синхронізацію з сховищем вище, не втрачаючи локальних змін.

$ git merge upstream/master

Updating a422352..5fdff0f
Fast-forward
README                    |    9 -------
README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

Якщо у вашій місцевій філії не було унікальних комісій, Git замість цього здійснить "швидку перемотку":

$ git merge upstream/master

Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Тепер вам потрібно буде натиснути комірки на вилку.

$ git push

Якщо ви ще не маєте автентифікацію, він запропонує ввести ім'я користувача / пароль github. Після перевірки автентичності нові коміти повинні бути висунуті на вашу вилку та видимі на github.


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