Почему git не предоставляет значение по умолчанию при отмене коммита слияния, который передается в удаленную ветку? - PullRequest
0 голосов
/ 16 января 2019

Как я знаю в большинстве ситуаций, мы делаем git revert -m 1 <merge-hash>. Почему они не устанавливают значения по умолчанию первому родителю при возврате коммита слияния? Есть какие-то причины?

Кроме того, в каких случаях нам придется использовать -m 2?

1 Ответ

0 голосов
/ 16 января 2019

Git revert обычно работает на коммитах только с одним родителем. Не предоставляя родителя по умолчанию, git гарантирует, что вы знаете, что отменяете коммит с двумя родителями, и продумали, что это значит. (Я просто догадываюсь, почему они по умолчанию не -m 1.)

Вам нужно использовать -m 2, если вы хотите отменить изменения, внесенные в другую ветку. Например, предположим, что вы сливаете ветку feature в ветку master. Затем, если вы хотите отменить этот коммит слияния, вы обычно возвращаете feature ветвь "из" главной ветви с помощью -m 1. (Конечным результатом возврата является предыдущий коммит в основной ветви.) Если бы вместо этого вы сделали -m 2, вы бы «вернули мастер из ветви функций». Это редко имеет смысл (потому что конечное состояние будет таким же, как текущий HEAD вашей feature ветви, но с некоторыми дополнительными коммитами, которые применяют некоторые изменения, а затем отменяют их). (Конечным результатом возврата будет предыдущий коммит в ветви feature .)

...