2011-01-06 2 views
1

У меня есть исходное дерево с git, и мне нужно отменить все мои изменения, которые я сделал с сентября, я знаю идентификатор commit, и я также могу создать список коммитов, которые я хочу вернуть с помощью git rev- список, вопрос в том, как я могу передать этот список git, чтобы он не менял всех из них?Как мне изменить список коммитов в git?

Или, если есть лучший способ сделать это, я был бы очень признателен.

+0

Возможный дубликат [Git: удаление выбранных коммитов из репозитория] (http://stackoverflow.com/questions/495345/git-removing-selected-commits-from-repository) – Cascabel

ответ

0

Если вы хотите, чтобы уничтожить все изменения с заданной фиксации, вы можете сбросить ветку вы работаете (например, master) для фиксации. То, что делает git reset <commit>, заключается в том, что он перемещает ваш HEAD в заданный фиксатор. Следующие коммиты будут отброшены.

A---B---C---D-master 

затем

git reset --hard <SHA1-of-B> 

дает вам:

A---B-master 

--hard для отбрасывания последних изменений из индекса и локальные файлы.

Если у вас несколько ветвей, это может немного усложниться, но вы получите эту идею.

Обратите внимание, что отброшенные коммиты могут быть возмещены с помощью git reflog, но вы не увидите их, если не пытаетесь. В конце концов, отброшенные коммиты исчезнут навсегда, особенно если вы используете git gc время от времени.