2017-02-07 3 views
3

я такая ситуация:Как объединить одну и ту же фиксацию снова, чтобы справиться?

enter image description here

Вчера я слился совершить 223a3a6 в мастера. Изменение не получилось, потому что я не адаптировал некоторые jsons. Я быстро вернул мастера, чтобы не разорвать производственные серверы. Commit 495b186 unid commit 223a3a6.

Я установил jsons в commit 215b7a6. Теперь, когда я хочу снова объединиться в мастера. Мне нужны изменения от фиксации 223a3a6 и 215b7a6 в главном.

Проблема с фиксацией 223a3a6 уже была объединена с мастером. Гит не позволяет мне снова объединить его в мастера. Наш мастер защищен от записи, поэтому я не могу сбросить мастер.

Как это решить и слить фиксацию 223a3a6 и 215b7a6 в мастер?

+0

Хорошо, может быть, тупой вопрос ... но если 223a3a6 уже находится на главной ветке, зачем вам снова сливать его? Или вы говорите, что возврат, который вы сделали, также уменьшил изменения, которые были частью фиксации 223a3a6? –

+0

Точно. Commit 495b186 undid 223a3a6. – mles

+1

Вы не можете, вполне, но вам тоже этого не нужно. См. Http://stackoverflow.com/q/38011005/1256452 для подсказок и помните, что коммиты - это две разные вещи: * history * (родительские ссылки) и * дерево * (моментальный снимок обычно делается из индекса, когда вы запускаете 'git commit'). Слияние использует историю для (автоматически) построения дерева, но с помощью '--no-commit' вы можете разделить это на отдельные этапы. – torek

ответ

1

Это похоже на ситуацию, описанную на странице git howto-revert-a-faulty-merge.

Возможно, вы использовали «git revert -m», чтобы вернуть слияние. Это возвращает изменения в файлы, но факт, что вы объединили эту ветвь, все еще записывается. В результате любые будущие попытки слияния этой ветви будут приводить к пересмотру только после того, как произошло слияние.

Документация «мерзавец слияние -m» говорит:

Откат слияния совершить заявляет, что вы никогда не хотите, чтобы дерево изменения, внесенное в слиянии. В результате последующие слияния будут только вносить изменения дерева, введенные коммитами, которые не являются предками ранее восстановленного слияния. Это может быть или не быть тем, что вы хотите.

Приведенное решение на странице HOWTO упоминалось выше, чтобы вернуть коммита, который вернулся слияния (который повторно вводит изменения, сделанные в этом слиянии), то вы должны быть в состоянии объединить ветви, чтобы принести в исправления.