В конечном счете, потому что Итератор получает абстракцию управления, которая применима к большому количеству структур данных. Если Вы бодрствуете на своей теории категорий fu, можно было унести ум данная статья: Сущность Шаблона Итератора .
Чтобы создать новую фиксацию, которая «отменяет» изменения прошлой фиксации, используйте:
$ git revert <commit>
Также возможно фактически удалить фиксацию из произвольной точки в прошлом, перебазировав и затем сбросив, но вы действительно не хотите этого делать, если вы уже отправили свои коммиты в другой репозиторий (или кто-то другой снял с вас).
Если я правильно вас понял, вы говорите о выполнении
svn merge -rn:n-1
для выхода из более ранней фиксации, и в этом случае вы, вероятно, ищете
git revert
Для возврата к фиксации слияния необходимо использовать: git revert -m <номер родителя>
. Так, например, для возврата последнего коммита слияния с использованием родительского с номером 1 вы должны использовать:
git revert -m 1 HEAD
Для возврата коммита слияния перед последним коммитом, вы должны:
git revert -m 1 HEAD^
Использовать git show
, чтобы увидеть родителей, нумерация - это порядок их появления, например, Merge: e4c54b3 4725ad2
git'овская документация по слиянию: http://schacon.github.com/git/git-merge.html
обсуждение слияния git (путаница, но очень подробная): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt