Intereting Posts
перезагрузка в интерактивном режиме, но появляется только одно сообщение? Git-эквивалент «svn status -u» (пересмотренный) Создание git-репо для клонирования Настройка переменной среды через SSH git push Bzr полностью удаляет изменения (с файлами) Измените ветку после использования аргумента –branch Как я могу изменить историю, непосредственно редактируя патчи и метаданные? Subversion Merge – можно игнорировать историю слияния? Visual Studio 2017 соединяет только один проект в многопроектном решении с Git repo Подключенный диск репозитория Subversion не работает с использованием протокола файлов «Git» не признается внутренним «бла-бла», хотя команда работает в первый раз автоматически синхронизировать локальный репозиторий git с удаленным репозиторием, когда есть новая фиксация в той же ветви История филиала SVN потеряна из-за миграции Как маршрутизировать страницы с помощью ui-router на основе роли и аутентификации в angularjs это правильный синтаксис для игнорирования .meta в любой папке?

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