2 git ветви должны быть одинаковыми после слияния, но не - PullRequest
0 голосов
/ 01 апреля 2020

Я не уверен, как правильно объяснить это в заголовке, так что вот ситуация. У меня 2 отделения, мастер и постановка. Недавно я вытащил постановку на мастера, чтобы обновить производство. Было тонна конфликтов. Я пошел с этим и решил их, потому что прошло много времени с начала производства. Однако это было всего 2 дня go. С тех пор я сделал 2 маленьких sh коммитов на постановку и хотел бы снова включить постановку в мастер, однако я снова получаю тонну конфликтов слияния, что произошло несколько месяцев go. Разве эти ветки не должны соответствовать друг другу с тех пор, как я их недавно объединил?

Я немного разбираюсь в этом и не нахожу никакой информации, которая была бы честной. Моя цель - сделать мастера таким же, как постановка. git reset --hard вариант? Я не уверен, что в этом есть какой-то смысл, но я попытался сначала объединить мастер в постановку и разрешение этих конфликтов, а затем - в мастер, но это ничего не дало.

Решение:

Я не совсем уверен ... Каким-то образом эти ветки фактически не были объединены в течение последних двух месяцев, что снова вызывает такой массовый пиар. Недоумение вызывает тот факт, что, когда я соединил их два дня go, все прошло хорошо, и в производстве произошли последние изменения. В любом случае, я продолжил объединять их еще раз, надеясь, что это займет. Я создам несколько коммитов в какой-то момент и попробую снова, надеюсь, это не будет массовым пиаром снова Спасибо за вашу помощь, ребята

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

Это аналогично ответу eftshift0 без команд:

git switch master
git merge stage --no-commit
git restore --worktree --staged --source stage :/
git commit

Если вы хотите избежать конфликтов слияния в будущем, вы можете принять следующий рабочий процесс (из Pro Git):

Если у вас есть более важный проект, вы можете использовать двухфазный цикл слияния. В этом сценарии у вас есть две продолжительные ветви: master и development, в которых вы определяете, что master обновляется только тогда, когда выпадает очень стабильный выпуск и весь новый код интегрируется в ветку разработки. Вы регулярно добавляете обе эти ветки в хранилище publi c. Каждый раз, когда у вас есть новая ветка для слияния, вы объединяете ее в разработку; затем, когда вы помечаете релиз, вы пересылаете мастер вперед, где находится теперь стабильная ветвь разработки.

0 голосов
/ 01 апреля 2020

Если вы хотите, чтобы мастер выглядел точно так же, как постановка (с точки зрения содержания) с ревизией, которая выглядит как слияние, вы должны выглядеть немного вне обычных инструментов:

git commit-tree -p master -p staging -m "make master just like staging" staging^{tree}

Это создаст ревизия, аналогичная той, которую вы запрашиваете, и она напечатает идентификатор на выходе. Проверьте это любым инструментом, который вам нравится. Если вам нравится, как это выглядит, то переместите мастер к нему:

git branch -f master <the-id>
git checkout master
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...