Как сделать одну удаленную ветку идентичной другой? - PullRequest
0 голосов
/ 09 октября 2018

По происхождению у меня 2 ветки: master и development.

master опережает development на несколько коммитов и отстает на несколько коммитов.

Я хочу, чтобы дерево ветви master было идентично дереву development ветка (речь идет об объекте дерева ревизий, а не об истории, собственно).Хорошо, если я что-то потеряю в ветке master, но ветка development должна быть неповрежденной.

Причины этого заключаются в том, что у нас есть рабочий процесс, в котором мы работаем над development и объединяемся сmaster когда мы будем готовы выпустить.Со временем некоторые коммиты были сделаны непосредственно на master.Мы хотим синхронизировать master с development.

Не могли бы вы поделиться, как этого можно достичь?Один способ, который, я думаю, может сработать, - это слить master с development, затем вернуть коммит из слияния в development и слить development с master.

Редактировать: я не могу принудительно нажать.Мне нужно создать запрос на получение изменений, чтобы внести какие-либо изменения.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Вы столкнулись со стандартной проблемой разработки Git, с которой мы все сталкиваемся, и поэтому была разработана методология ветвления.Некоторые стратегии ветвления более популярны, чем другие.3 самых популярных:

  1. GitFlow (то, что вам нужно): https://nvie.com/posts/a-successful-git-branching-model/

  2. Поток GitHub: https://guides.github.com/introduction/flow/index.html

Я собираюсь кратко описать, как решить вашу проблему:

  1. В ветке 'развернуть' выполните команду 'master'.Разрешите любые конфликты слияний в ветви 'Develop', а затем подтвердите и добавьте в ветвь 'Develop'.
  2. Сделайте сборку из ветви 'Develop' и убедитесь, что все собирает и вставляет любые юнит-тесты, если выиметь любой.
  3. Выполнить запрос на извлечение, чтобы получить ваш код в ветку 'master', и теперь ваша ветка 'master' и ветвь'velop 'теперь синхронизированы.

Вот как можно решить вашу проблему в будущем:

  1. Работайте над разработкой в ​​ветке 'development'
  2. Делайте ваши функции в ветках 'feature'.Создание запросов извлечения для получения кода из ветвей «feature» в ветку «Develop».
  3. Объединение из ветки «Develop» в ветку «release», сборка пакета из ветки «release» и развертывание в тестовой среде.
  4. Выполняйте тестирование в ветке 'release' и исправляйте исправления в той же ветке 'release'.
  5. После развертывания в рабочей среде объедините свой код с веткой 'master' и НЕ ТРОГАЙТЕ ЕГО.Это наш золотой производственный код.
  6. Если есть производственная проблема, перейдите из ветки 'master' в новую ветвь, называемую 'hotfix', и сделайте коммиты и сборки отсюда, а затем внедрите в Production для аварийных исправлений..
  7. Когда все выполнено, слияние исправляет в обратном направлении в ветку 'master', затем ветвь 'release' и 'development'.Отдельные разработчики будут вносить исправления в свои «функциональные» ветки, когда они будут готовы.
  8. Я пропускаю многое, но я достигаю высших точек в методологии ветвления под названием «GitFlow», упомянутой выше.Это медленный процесс, который замедляет вас специально.Вам не нужно следовать этому процессу, или вы можете изменить этот процесс в соответствии со своими потребностями.Это гораздо большая тема, которую вы можете часами часами читать.Удачи.
0 голосов
/ 09 октября 2018

просто отправьте разработку в удаленный мастер (даже если с помощью -f принудительно):

git push -f origin develop:master

Настройте имя удаленного.

Еще одно хакерское предложение

Если вы хотите, чтобы мастер выглядел точно так же, как разработка с PR с наименьшим объемом работы, это то, что вы хотели бы сделать:

git cat-file -p origin/develop # find the ID of the _tree_ of this revision
git commit-tree -p origin/master -m "Tree of master is now just like develop" id-of-tree-of-last-command # create a new revision with the same tree of develop... this will generate one ID
git checkout -b some-development use-id-printed-by-commit-tree
git push some-remote some-development

Теперь вы можете создать свойPR из some-development .... если вы также хотите, чтобы development был родителем этой ревизии, добавьте его в качестве другого параметра -p в commit-tree.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...