git merge master перезаписывает изменения - PullRequest
0 голосов
/ 04 октября 2018

У меня есть 3 филиала.1) master 2) dev: - текущая разработка 3) release: - когда мы прекращаем разработку из ветви dev, создаем эту ветку и делаем только ошибки регрессии в этой ветке.Тем временем ветка dev будет работать для всей будущей разработки.

Теперь мы объединяем ветку release с master.А затем попробуйте объединить master с dev.

При слиянии master с dev это то, что я делаю.1) мастер git checkout 2) git pull 3) git checkout dev 4) создайте новую ветку из dev и назовите ее merge-master-to-dev 5) git checkout merge-master-to-dev 6) git merge master

когда я это делаю, я не вижу конфликтов.Похоже, что все файлы / коммиты слиты со свойством master от merge-master-to-dev.Но когда я смотрю на некоторые файлы в коде, я вижу, что один или несколько коммитов отсутствуют.Никогда не видел, чтобы это происходило раньше, так что есть идеи, что я делаю неправильно?

1 Ответ

0 голосов
/ 31 декабря 2018

оказывается, что фиксация B была сделана в ветви dev, но:

  • , когда мы перешли на Release, тот же коммит B был откатан, и
  • , когдамы сливаем Release обратно в DEV, по какой-то причине, что фиксация A пропала во время процесса слияния

"по какой-либо причине", являясь слиянием, выполняющим свою работу, чтобы сообщить об изменении ветви-источника(здесь откат фиксации в Release) к ветви назначения (dev)

Чтобы избежать этих слияний, вы можете рассмотреть альтернативный рабочий процесс: gitworkflow (одно слово), где dev ветвь просто воссоздается после релиза, а ветки функций объединяются.

Ключевая часть:

"public" и "next" (он же 'devel ') ветви никогда не объединяются в master.Они являются «временными» или «эфемерными», всегда удаляются / воссоздаются.
Только ветви функций объединяются с ветвями жизненного цикла (public, next, master).Это означает, что в любой момент вы можете отказаться от функции между одним этапом жизненного цикла разработки и следующим.

...