Как Вы объединяете изменения на неосновных ответвлениях из разветвленного репозитория GitHub?

В обоих из следующих вопросов о StackOverflow принятый ответ описывает, как объединить изменения из разветвленного репозитория в ситуации, где Вы разветвляете repo, исходный repo изменяется, и затем Вы хотите объединить изменения, внесенные в основное ответвление назад в Ваш разветвленный repo.

Однако я не ясен о том, как Вы в курсе на неосновных ответвлениях в исходном repo, который Вы разветвили. Например, когда я первоначально разветвил репозиторий матрицы bitprophet, он содержал следующие ответвления:

  • ведущее устройство
  • 0.9
  • 0,9 документа переписывают (больше не существует),
  • path-#24 (больше не существует),

Последние два ответвления больше не существуют, и теперь существует новое ответвление flexible-task-declarations. Я выбрал, объединил и продвинул свое основное ответвление, так, чтобы ведущее устройство, источник/ведущее устройство и восходящий поток/ведущее устройство все имели тот же хеш SHA1 и указали на тот же снимок мерзавца. Однако я не уверен, как удалить ответвления, которые больше не существуют и обновляют новые ответвления так, чтобы мое ветвление было актуально. Я должен отследить каждое восходящее ответвление и затем выбрать, объединить и продвинуть каждое ответвление индивидуально, или есть ли лучший путь?

15
задан Community 23 May 2017 в 12:24
поделиться

2 ответа

Сценарий 1: Удаление веток, которые больше не существуют

Для удаления веток, которые больше не существуют, я выполнил инструкции в ответе на вопрос StackOverflow Как удалить ветку в Git'е как локально, так и в Github'е? с помощью следующих команд:

$ git push origin :0.9-doc-rewrite
$ git push origin :path-and-#24

Сценарий 2: Слияние изменений в существующей немастерской ветке

Для получения восходящего/0. В 9 ветках я сделал следующее:

$ git checkout --track origin/0.9
$ git fetch upstream
$ git merge upstream/0.9
$ git push

Сценарий 3: Отслеживание новых немастерных ветвей

Не уверен, что это лучший способ обработки, но вот что я сделал:

$ git branch flexible-task-declarations upstream/flexible-task-declarations
Branch flexible-task-declarations set up to track remote branch flexible-task-declarations from upstream.
$ git checkout flexible-task-declarations
$ git push origin flexible-task-declarations

Чтобы подтвердить, что все ветки находятся на одном коммите:

$ git branch -av

Это покажет все ветки - локальные и удалённые - и покажет самое последнее сообщение коммита и SHA1 хэш.

Веб-исследования, которые могут пролить свет на лучший метод работы со сценарием 3

A key difference between a Git fork, по сравнению с простым Git-клоном или SVN-кассой, это то, что ваша вилка никогда не будет держать себя в курсе с мастер-репо, если вы не сделаете этого. К счастью, есть простой инструмент, который поможет вам в этом. Ваша вилка отделена и равна мастеру в терминах Git'а, так что если вы хотите отслеживать изменения в мастере, вы можете создать отслеживающую ветку в вашем вилочном репо и сливать эти изменения в мастер-ветку вилки всякий раз, когда вы захотите что-то зафиксировать. Я настоятельно рекомендую GitHub - инструмент, который вы можете установить, чтобы легко отслеживать изменения в любом другом репозитории, связанном с вашим. См. текст README внизу этой страницы для установки и использования: http://github.com/defunkt/github-gem/tree/master

Ignore the Github Fork Queue It's evil! Очередь вил - это инструмент для мейнтейнеров, которые любят выбирать отдельные коммиты из участников, но не хотят сливаться во всей своей ветке. Если вы поиграете с очередью вил, вы испортите свою вилку (это можно исправить, прочтите "Что-то пошло не так"). Многие новички на github чувствуют, что они должны что-то делать с очередью вил, потому что там много, возможно, противоречивых изменений, и они не знают, какой способ поддерживать свою вилку в актуальном состоянии. Читайте "Держать вилку в актуальном состоянии" и узнайте об этом!

Django's Github Workflow

В проекте Django есть инструкции по работе с GithubCollaborate on Github, которые используют то, что кажется стандартным способом работы с вилкой и вытягиванием изменений вверх по потоку.

Различная начальная конфигурация вилки

Долгое гостевое сообщение Nguyen под названием Настройка Git-репозиториев для проектов с открытым исходным кодом на GitHub в блоге Майкла Хартла описывает интересный метод настройки репозитория Github, который вы отбросили. Цели этого метода, согласно статье:

  • Держите репозитории синхронизированными так, чтобы каждый из них содержал полный "официальный" репозиторий
  • Позвольте разработчикам получать официальные обновления
  • Поощряйте работу над ветвями, отличными от master
24
ответ дан 1 December 2019 в 02:19
поделиться

В основном, у вас есть 3 удалённых Git-репо тонны учесть:

  • локально: ваше текущее git-репо на вашей рабочей станции.
  • происхождение: это ваша вилочная версия ткани: cumulusware
  • upstream: bitprophet / fabric, который является источником всех остальных вилочных репо

Вы можете добавить upstream в качестве удаленного репо к вашему локальному.

 git remote add upstream http://github.com/bitprophet/fabric.git

посмотрите на удалённые ветки

 git branch -r 

и нажмите (удалите) те, которые существуют в оригинале, но больше не существуют в исходном потоке

 git push origin :anOldBranch

Затем

 git remote prune origin

очистите ветки в вашем локальном repo (которые больше не существуют в оригинале, так как вы их только что удалили)

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

: bitprophet будет иметь только быструю перемотку вперёд, чтобы включить вашу работу)

Не знаю, сможете ли вы иметь более простой процесс/команду/скрипт для синхронизации двух удалённых репозиториев.

3
ответ дан 1 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: