Intereting Posts
как эффективно использовать git rebase в следующем сценарии Автоматически находить изменения для слияния в Subclipse Импорт проблем в github от конечного пользователя Разрешение отклонено (publickey). GitHub – использование горячей точки Gitlab: Аватар на linux отличается от версии Windows запустить exe после успешного экспорта svn из TortoiseSVN Проект повторного использования Laravel 5 Rails и Git, какая ветка используется? Как использовать gitignore только для фиксации / добавления каталога с наивысшим номером из коллекции нумерованных каталогов Неисправность развертывания сайта Zend Framework с помощью Capistrano: ошибка аутентификации SSH Подрывная папка SVN Eclipse остается в конфликте Обрезка нескольких последовательных записей в истории Возможно ли объединить файлы в ветку obselete в clearcase? SSH логин: A может войти в систему B, но B логин Пароль необходимости? Git tracking dotfiles (пример: .zshrc)

Возвращение git merge -s ours

Я хочу вернуть слияние, потому что вместо использования git merge -s recursive -X ours , я использовал git merge -s ours .

Я прочитал этот пост в блоге о возврате слияний, но, похоже, он не работает для моего дела.

Итак, у меня есть master ветвь, а затем ветка topic . В какой-то момент я объединил master в topic , а затем объединил topic в master . Когда я объединил master в branch , у меня был конфликт в файле, но я подумал, что это не делает ничего важного, поэтому я решил, что говорю git, чтобы пропустить его и использовать мою версию. Вот когда я использовал git merge -s ours вместо git merge -s recursive -X ours , который я узнал сегодня, что он проигнорировал все, что сделал один из моих товарищей по команде.

Теперь я пытаюсь вернуть это слияние:

 git checkout master git revert -m 2 c475f0ac 

Это действительно приводит к тому, что изменения дерева игнорируются в моем слиянии (изменения моей команды). Проблема в том, что теперь мои изменения больше не в дереве. Я попытался вернуться назад, но не успел.

Любое предложение о том, как вернуть такое слияние?

Подкоманда revert делает новую фиксацию для отмены указанного фиксации, это обычно сложно для возврата транзакций слияния

Вы можете установить дерево в состояние какой-либо конкретной фиксации, выполнить попытку слияния (is c475f0ac?), А затем установить дерево в родительский элемент состояния этого фиксажа (обратите внимание на точку в конце команды, это важно):

 git checkout c475f0ac^ . 

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

 git checkout c475f0ac^2 . 

И так далее. Вы найдете полезную команду gitk для анализа коммитов, прежде чем продолжить (чтобы выбрать фиксацию, которую вы хотите):

 gitk c475f0ac 

После установки состояния на предыдущую фиксацию, вы можете зафиксировать

 git commit --message 'restored tree to state previous to merge commit c475f0ac' 

И затем нажмите

 git push