Intereting Posts
Хостинг приложения nodejs + express для Heroku? Git push -nothing для фиксации, рабочий каталог чистый Почему мой сайт, размещенный на Github, отвечает HTTP 302 вместо 200? Visual Studio. Как добавить библиотеку non nuger, чтобы она могла работать с исходным кодом (tfs), а не с локальным файлом? См., Из какой ветви была создана ветка? Go: как добавить git-версию в созданные двоичные файлы? Реверсивные механизмы в соли Git – удалить отсутствующие капли или деревья Как покрасить имена файлов в журнал git? Commit then checkout Другая ветка в git несет старую фиксацию? В Git, как я могу создать файл, который я только что использовал, без указания файла вручную? Как я могу исправить лишние новые строки в сносках при использовании Markdown? Удалить репозиторий из командной строки Github Конфликт при слиянии двух ветвей с третьей ветвью Рабочий процесс Git: как объединить фиксации, сделанные только на новой ветке

Возвращение 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