Git merge -no-ff переданная история коммитов, но не содержимое - PullRequest
0 голосов
/ 18 июня 2020

Столкнулся с ошибкой в ​​GitLab. В одном из моих проектов более 50 модулей. Поэтому, когда я объединяю ветки, я использую сценарий bash вместо пользовательского интерфейса слияния GitLab. До сих пор это работало нормально. На этот раз я столкнулся со странной проблемой. Фиксация слияния перенесла историю фиксации из исходной ветки в целевую, но не содержимое исходной ветки. Я пытался слить ветку cr_integrate с веткой cr_release. Локально я проверил cr_release.

Скрипт, который я использовал для слияния, приведен ниже:

git pull
git merge --no-ff origin/cr_integrate -s ours
git add *
git commit -m "Integrate merged into Release by script"
git push

Проект содержит подмодули и содержимое .gitmodules файл отличается для разных веток, поэтому я использовал -s our , чтобы избежать конфликта. Что-то не так со скриптом или это ошибка GitLab?

1 Ответ

1 голос
/ 18 июня 2020

поэтому я использовал -s ours, чтобы избежать конфликта

Но -s ours не является стратегией разрешения конфликтов. Это стратегия слияния.

Мне нравится читать документы:

стратегия слияния ours ... даже не смотрит на то, что содержится в другом дереве. Оно отбрасывает все, что делало другое дерево , объявляя, что наша история содержит все, что в ней происходило.

[выделено мной]

Итак, теперь вы говорите:

Фиксация слияния перенесла историю фиксации из исходной ветки в целевую, но не содержимое исходной ветки.

Ага. Потому что ты так сказал. Возможно, вы имели в виду -s recursive -X ours? Это стратегия разрешения конфликта.

...