Git: отменить merge

Автор: | 02/09/2015

git-logoЕсть репозиторий, с двумя бранчами – master и rdsmanager_NG-1.

Изменения в rdsmanager_NG-1 были смерджены в master.

Необходимо отменить это объединение.

Находим “лишний” мердж:

D:RDSrdsmanager>git log
commit d22654c64574d1f01ef49f12bf0688c7c9cc3c1d
Author: Your Name <[email protected]>
Date:   Wed Sep 2 00:42:05 2015 +0300

    11

commit 7bad6f70aa0d10717b55a141e9d85b4305ade67c
Author: User Name <[email protected]>
Date:   Tue Sep 1 17:52:05 2015 +0300

    NG-6727 RDSmanager user fix

В данном случае – коммит с ID d22654c64574d1f01ef49f12bf0688c7c9cc3c1d – не нужен.

Выполняем откат до предыдущего коммита:

D:RDSrdsmanager>git reset --hard 7bad6f70aa0d10717b55a141e9d85b4305ade67c
HEAD is now at 7bad6f7 NG-6727 RDSmanager user fix

Сохраняем изменения в самом репозитории:

D:RDSrdsmanager>git push --force origin master
Total 0 (delta 0), reused 0 (delta 0)
To [email protected]/rdsmanager.git
 + d22654c...7bad6f7 master -> master (forced update)

Готово:

D:RDSrdsmanager>git log
commit 7bad6f70aa0d10717b55a141e9d85b4305ade67c
Author: User Name <[email protected]>
Date:   Tue Sep 1 17:52:05 2015 +0300

    NG-6727 RDSmanager user fix

commit be299f2873ac3aa8f7b26c74914e65c022a82ddd
Author: User Name <[email protected]>
Date:   Tue Sep 1 17:50:46 2015 +0300

    NG-6727 RDSmanager user fix

Отмена отмены мерджа.

Создаём бранч заново, с ID коммита, который был отменён:

D:RDSrdsmanager>git branch -f rdsmanager_NG-1 d22654c64574d1f01e
D:RDSrdsmanager>git log
commit d22654c64574d1f01ef49f12bf0688c7c9cc3c1d
Author: Your Name <[email protected]>
Date:   Wed Sep 2 00:42:05 2015 +0300

    11

commit 7bad6f70aa0d10717b55a141e9d85b4305ade67c
Author: User Name <[email protected]>
Date:   Tue Sep 1 17:52:05 2015 +0300

    NG-6727 RDSmanager user fix

Все данные снова на месте.

f49f12bf0688c7c9cc3c1d

Проверяем:

D:RDSrdsmanager>git branch
* master
  rdsmanager_NG-1

Переключаемся на новый бранч, и проверяем:

D:RDSrdsmanager>git checkout rdsmanager_NG-1
Switched to branch 'rdsmanager_NG-1'
D:RDSrdsmanager>git log
commit d22654c64574d1f01ef49f12bf0688c7c9cc3c1d
Author: Your Name <[email protected]>
Date:   Wed Sep 2 00:42:05 2015 +0300

    11

commit 7bad6f70aa0d10717b55a141e9d85b4305ade67c
Author: user Name <[email protected]>
Date:   Tue Sep 1 17:52:05 2015 +0300

    NG-6727 RDSmanager user fix

Все изменения на месте.