Я не думаю, что это то, что подразумевается под вопросом. Обратное слияние в SVN также отменяет изменения от фиксации к локальным изменениям, так что вы можете редактировать их и снова фиксировать.
Чтобы создать новую фиксацию, которая «отменяет» изменения прошлой фиксации, используйте:
$ git revert <commit>
Также возможно фактически удалить фиксацию из произвольной точки в прошлом, перебазировав ее и затем сбросив, но вы действительно не хотите этого делать, если вы уже отправили свои коммиты в другой репозиторий (или кто-то другой снял с вас) ,
Вероятно, вам нужно будет указать -m <parent number>параметр, git revertчтобы указать, какое изменение нужно отменить. Если вы хотите отменить слияние неопубликованной истории, используйте git reset --hard HEAD^1.
Якуб Наребски
3
Якуб: это правда, если вы откатываете фиксацию слияния, но в терминологии Subversion «обратное слияние» на самом деле просто название для отмены любого вида фиксации.
Чтобы вернуть слияния коммит, вы должны использовать: git revert -m <parent number>. Так, например, чтобы отменить последнюю самую последнюю фиксацию слияния с использованием родителя с номером 1, вы должны использовать:
git revert -m 1 HEAD
Чтобы отменить фиксацию слияния перед последней фиксацией, вы должны сделать:
git revert -m 1 HEAD^
Используйте, git show <merge commit SHA1>чтобы увидеть родителей, нумерация - это порядок, в котором они появляются, напримерMerge: e4c54b3 4725ad2
Как можно получить «число», связанное с родителем? Есть ли у веток внутренний числовой идентификатор?
daniyalzade 05
7
Используйте, git show <merge commit SHA1>чтобы увидеть родителей, нумерация - это порядок, в котором они появляются, напримерMerge: e4c54b3 4725ad2
supermethod
8
Пример: git revert -m 1 SHA1Эта команда сработала для меня, чтобы отменить фиксацию слияния, которая была несколькими коммитами слияния до начала и имела много коммитов ниже.
c.apolzon
3
Какие родители? E4c54b3 или 4725ad2?
Дельфин
1
Это все еще не дает достаточно информации о том, как результаты git show соотносятся с родительскими числами. "Порядок их появления" основан на 1? 0 на основе? В частности, в этом примере каков SHA1 родительского элемента 1? e4c54b3 или 4725ad2?
cowlinator 05
4
Если я вас правильно понимаю, вы говорите о
svn merge -rn:n-1
чтобы отказаться от более ранней фиксации, и в этом случае вы, вероятно, ищете
Это отбрасывает фиксацию слияния, которая не выполняет то, что просит исходный плакат. OP пытается выполнить обратный патч, чтобы отменить предыдущие изменения, а не полностью стереть историю предыдущих изменений.
-1
Если вы не хотите совершать фиксацию или хотите выполнить фиксацию позже (для вас все равно будет подготовлено сообщение фиксации, которое вы также можете отредактировать):
Ответы:
Чтобы создать новую фиксацию, которая «отменяет» изменения прошлой фиксации, используйте:
Также возможно фактически удалить фиксацию из произвольной точки в прошлом, перебазировав ее и затем сбросив, но вы действительно не хотите этого делать, если вы уже отправили свои коммиты в другой репозиторий (или кто-то другой снял с вас) ,
источник
-m <parent number>
параметр,git revert
чтобы указать, какое изменение нужно отменить. Если вы хотите отменить слияние неопубликованной истории, используйтеgit reset --hard HEAD^1
.-m
означает, что будущее слияние из неслитой ветки не будет включать изменения, сделанные до этого слияния! См. Schacon.github.com/git/howto/revert-a-faulty-merge.txt, чтобы узнать о правильных способах повторного слияния неслитой ветки.Чтобы вернуть слияния коммит, вы должны использовать:
git revert -m <parent number>
. Так, например, чтобы отменить последнюю самую последнюю фиксацию слияния с использованием родителя с номером 1, вы должны использовать:Чтобы отменить фиксацию слияния перед последней фиксацией, вы должны сделать:
Используйте,
git show <merge commit SHA1>
чтобы увидеть родителей, нумерация - это порядок, в котором они появляются, напримерMerge: e4c54b3 4725ad2
Документация по слиянию git: http://schacon.github.com/git/git-merge.html
обсуждение слияния git (запутанное, но очень подробное): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt
источник
git show <merge commit SHA1>
чтобы увидеть родителей, нумерация - это порядок, в котором они появляются, напримерMerge: e4c54b3 4725ad2
git revert -m 1 SHA1
Эта команда сработала для меня, чтобы отменить фиксацию слияния, которая была несколькими коммитами слияния до начала и имела много коммитов ниже.Если я вас правильно понимаю, вы говорите о
чтобы отказаться от более ранней фиксации, и в этом случае вы, вероятно, ищете
источник
Используйте указанную выше команду, чтобы отменить изменения слияния.
источник
Если вы не хотите совершать фиксацию или хотите выполнить фиксацию позже (для вас все равно будет подготовлено сообщение фиксации, которое вы также можете отредактировать):
источник