Как вы обновляете GitHub репо в веб-интерфейсе?

58

У меня есть репозиторий Github, который я разветвлял из какого-то другого проекта несколько месяцев назад. Прошло уже несколько месяцев, а оригинальное мастер-репо изменилось. Я хотел бы обновить свое репо, чтобы отразить эти изменения. Возможно ли это в веб-интерфейсе Github? Или мне просто нужно удалить репо и заново его разветвить?

Джейк Уилсон
источник

Ответы:

43

Вы можете попытаться изменить направление запросов.

  1. Иди на вилку
  2. Выдать запрос на извлечение

    По умолчанию это будет ваш форк справа ( главный репо ) с просьбой подтолкнуть свои коммиты и изменения в исходное репо ( базовое репо ) слева.

  3. Нажмите раскрывающийся список для базового репо и головного репо и выберите репо друг друга.

    Вы хотите, чтобы ваш список был указан слева (принимая изменения), а исходный репозиторий находится справа (тот, с изменениями для push). Как показано на этом изображении:

    вилка сделана над собой

  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
23

Это будет проще.

  1. Зайдите в Forked Repo (ваш) и просто нажмите кнопку - «Новый запрос на извлечение».
  2. На открывшейся странице есть небольшая ссылка на «базу переключения» в сообщении под выпадающим списком. Нажмите на ссылку.
  3. Теперь это автоматически приведет к вашему исходному репо. Нажмите кнопку « Создать запрос на извлечение» и напишите сообщение о коммите.
  4. Теперь это приведет к автоматическому открытию вашего репо, нажмите « Слить запрос на выгрузку» и подтвердите слияние, чтобы завершить.
Youngjae
источник
Вы должны уточнить, что это за зеленые кнопки, и это было бы отличным ответом ...
Родриго Граса
Это, безусловно, лучший ответ на 4/2016.
dr01
7
Проблема этого метода заключается в том, что он добавляет дополнительную фиксацию в вашу ветку, поэтому он не синхронизирован с репо в восходящем направлении.
Мотти
@ Mottie Есть ли у нас способ узнать, стоит ли наш форк за последней версией вверх по течению, и увидеть разницу изменений, даже не потянув их?
Суджай Пхадке
1
@SujayPhadke На вашей главной странице репо под кнопкой выбора ветки появится сообщение «Эта ветка хх коммитов за хххх: мастер.». Что касается просмотра различий, есть кнопка «сравнить» в той же строке, что и сообщение; или вы можете перейти по этой ссылке:https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
Mottie
3

Как обновить раздвоенный репозиторий GitHub с изменениями из удаленного обратного репозитория


Инструкции от GitHub Help:

Настройка удаленной вилки

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


Инструкция по настройке / эксплуатации:

Откройте 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)

Получите ветки и их соответствующие коммиты из верхнего хранилища. Commits to master будет храниться в локальной ветке upstream / 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'

Объедините изменения из upstream / master в вашу локальную ветку master. Это синхронизирует главную ветвь вашей ветки с вышестоящим репозиторием, не теряя локальные изменения.

$ 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.

ode2k
источник
5
Спасибо за подробный ответ, однако была надежда на решение с использованием веб-интерфейса.
Тоби Аллен