Я новичок в области социального кодирования github и испытываю трудности с соблюдением рекомендаций github. Я попытаюсь описать, что произошло, и чего я пытаюсь достичь - надеясь, что более опытные мастера git могут помочь мне разобраться в аркадных командах, необходимых для этого.
- Оригинальный проект: https://github.com/phatboyg/MassTransit
- Мой вилок: https://github.com/davidcie/MassTransit
- Платформа: Windows, с Github для Windows + ее PowerShell
Что произошло
- Я разворачивал MassTransit в Июль 2012. Тогда его главная ветвь была в версии v2.1.1, с последней фиксацией на 29 марта 2012.
- Следуя рекомендациям github, я начал кодировать некоторые изменения в ветке темы.
- Несколько коммитов позже, когда функция была закончена, я объединил свою ветку темы в свой локальный мастер клонирования, а затем перетащил ее в github.
- С тех пор, как 29 марта 2012 года, MassTransit разрабатывался в своей ветке разработки. Все эти изменения, составляющие v2.6.0, были недавно объединены с его мастером.
Что я хотел бы сделать
Я хотел бы получить все изменения, которые были объединены в upstream/master. Предпочтительно, как их соответствующие коммиты, а не одно массовое совершение сотен файлов. Поскольку я занимался разработкой прежнего upstream/master (датированный 29 марта 2012 г.), мне было бы действительно нужно "вставить" некоторые коммиты между последней версией восходящего/основного изменения 29 марта и моей первой фиксацией 8 августа и то поверх этого добавьте те, которые произошли позже. Как это сделать?
(Я также хотел бы не уничтожать мои коммиты/вилку в этом процессе;)
Что я пробовал
git checkout master
git remote add upstream git://github.com/phatboyg/MassTransit.git
git rebase upstream/master
git push
Однако это не позволило мне сделать git push
, жалуясь, что мой локальный совет был 10 коммитов за исходным кодом (возможно, коммиты, которые я сделал на моей ветки темы, а затем объединены в начало/мастер?).
Рекомендации
Кажется, что я, возможно, был укушен рекомендациями. Например. возможно, было бы лучше создать отдельную ветвь, например. локальный мастер, и относиться к этому как... ну, мой собственный хозяин. Тогда мастер будет там только для того, чтобы поддерживать связь с восходящим/ведущим, и я бы иногда перегружал происхождение/мастер с восходящим/ведущим и сливался с источником/локальным мастером...
Как вы, ребята, управляете своими вилами?
Другие вопросы
Мне не удалось найти способ визуализации истории ветвей, какая ветка была объединена с другой, а когда и т.д. Github для Windows показывает только плоскую историю для выбранной в данный момент ветки (грустное лицо здесь). На веб-сайте есть некоторые визуализации для сети (вот для MassTransit), но это кажется намного менее информативным, чем сказать в TortoiseHg. Мне что-то не хватает? Все ли еще помнят, что было объединено с тем, что и когда?
Изменить (31 августа)
Я рассказываю о плохой визуализации, чтобы помочь объяснить, что произошло.
- Я разветвлялся, когда C1 был последним в upstream/master.
- Затем я развил свое происхождение/особенность-1.
- Одна из функций была завершена, я объединил ее с моим источником/мастером.
- Когда функция upstream/mega-feature была завершена, она была объединена с upstream/master, эффективно исторически копируя C2 и C3 для восходящего/ведущего. (Или, возможно, восходящий/мастер был переустановлен с восходящей/мегафункцией?)
- Теперь я хотел бы скопировать C2, C3 и C4 в исходное состояние/мастер.