Ответ 1
Сценарий 1: Удаление ветвей, которые больше не существуют
Чтобы удалить ветки, которые больше не существуют, я выполнил инструкции в ответе на вопрос StackOverflow Как удалить ветвь Git как локально, так и в Github?, выполнив следующие команды:
$ git push origin :0.9-doc-rewrite
$ git push origin :path-and-#24
Сценарий 2: Слияние изменений в существующей ветке без ведущего устройства
Чтобы обновить ветвь upstream/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
- Руководство Github: Сохранение вилки Git в синхронизации с разветвленным репо - Предоставляет ярлык для слияния octo как из источника, так и из upstream repo в то же время, но не описывает начальный шаг получения ветки, которая находится в восходящем, но не локальном установлении локально.
- Используйте и сохраняйте ток вилки с помощью главного хранилища Git из FAQ по xmpp4r.
Ключевое различие между вилкой Git по сравнению с простым клоном Git или проверкой SVN заключается в том, что ваша вилка никогда не будет обновляться с помощью мастер-репо, если вы этого не сделаете. К счастью, есть простой инструмент, который поможет вам в этом. Ваша вилка раздельна и равна мастеру в терминах Git, поэтому, если вы хотите отслеживать изменения мастера, вы можете создать ветвь отслеживания в своем разветвленном репо и объединить эти изменения в свою ветку master forks, когда хотите что-то совершить. Я настоятельно рекомендую "GitHub gem", который является инструментом, который вы можете установить, чтобы помочь вам легко отслеживать изменения в любом другом репозитории, связанном с вашим. См. Текст README внизу этой страницы для установки и использования: http://github.com/defunkt/github-gem/tree/master
- Совлокальный рабочий процесс Github от eqqon (хорошая статья о рабочем процессе Github):
Игнорировать очередь вихрей Гитуба Это зло! Очередь вилок - это инструмент для тех, кто любит выбирать отдельные коммиты от участников, но не хочет сливаться во всей своей ветке. Если вы играете в очередь с вилкой, вы повредите свою вилку (ее можно исправить, прочитав, Что-то пошло не так). Многие новички на github чувствуют, что они должны что-то делать с очереди fork, потому что там есть много возможных противоречивых изменений, и они не знают, что является предполагаемым способом поддержания одной из вилок в актуальном состоянии. Прочитайте, Держите свою вилку в курсе и узнайте!
Рабочий процесс Django Github
В проекте Django есть инструкции о том, как Сотрудничать с Github, который использует то, что, как представляется, является стандартным способом обработки разворота и вытягивания вверх по течению изменения.
Разная конфигурация начальной вилки
Долгосрочная публикация Long Nguyen под названием Настройка репозиториев Git для проектов с открытым исходным кодом в GitHub в блоге Майкла Хартла описывает интересный метод для настройте репозиторий Github, который вы разветкили. Цели этого метода в соответствии со статьей заключаются в следующем:
- Храните репозитории в синхронизации так, чтобы каждый из них содержал полный "официальный" репозиторий
- Разрешить разработчикам публиковать официальные обновления.
- Поощрять работу над ветвями, отличными от master