2017-02-17 3 views
2

Я столкнулся с ситуацией, когда мне нужно вернуть одно из моих слияний в git. Я использовал следующую команду:Значение 1 и 2 при возврате слияния с фиксацией

git revert -m 1 [merge commit id] 

Теперь мерзавец обеспечивает еще один вариант для указанной выше команды, как показано ниже:

git revert -m 2 [merge commit id] 

я не получал разницу между 1 и 2

Ссылки Используется: https://www.christianengvall.se/undo-pushed-merge-git/

+0

слияния совершает в основном 2 родителей, и число указывает на родителя, с которым вы хотите вернуться – Jehof

ответ

1

Документация git revert обеспечивает синтаксис как

git revert [--[no-]edit] [-n] [-m parent-number] [-s] [-S[<keyid>]] <commit>…​ 

Таким образом, число после -m здесь представляет родительский номер

Слияние совершают может иметь два родителя говорят, рассмотрим пример, что ваш текущий хэш 0ce2ca0b35f59af267241cf4d40d16a3e13ba6f3

и имеет двух родителей

df1acf5f54426d30f12c6b4558c3dd922297aae3 
e19b912404ffd3c153ccac3072dbf22396896d2a 

git revert -m 2 0ce2ca0b35f59af267241cf4d40d16a3e13ba6f3 

вернется к e19b912404ffd3c153ccac3072dbf22396896d2a

Documentation

0

Резервуар git - это всего лишь древовидный вид. Согласование слияния - это всего лишь фиксация, в которой есть два (или более) родителя.

Если вы вернете фиксацию с одним родителем, вы просто изменяете изменения, введенные этим фиксатором.

Если вы возвращаете фиксацию слияния, однако, вам нужно вернуть все изменения из ветки, в которую вы слились. Однако нет реальной концепции того, какая ветка была объединена, к которой вы просто имеете родителей: фиксации и -m говорит мерзавец, какой родитель вы хотите вернуться к (т.е. отменить изменения, внесенные от другого родителя.)

См документации здесь: https://git-scm.com/docs/git-revert#git-revert--mparent-number

Смежные вопросы