Удалить конкретную ревизию из репозитория Git? - PullRequest
7 голосов
/ 12 ноября 2011

Возможно ли вообще удалить конкретный набор изменений из репозитория Git. Я хочу сделать это, потому что недавно был коммит, в который были добавлены некоторые двоичные файлы, которые абсолютно бесполезны для управления исходным кодом.

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

И ответ «нет» на вопросы, которые задают «можете ли вы просто клонировать новую копию времени до того, как произошел этот коммит, и начать с этого снова?».

1 Ответ

9 голосов
/ 12 ноября 2011

Используйте git rebase -i <commit-id>, где id - это фиксация перед набором изменений, который вы хотите удалить.Он откроет список коммитов между головой и набором изменений, удалит из списка коммит, который вы хотите, и продолжите.Когда этот коммит будет «отсоединен», это означает, что он будет перемещаться в хранилище, пока не будет собран мусор.Вы можете использовать git gc, чтобы форсировать его.

Однако, вы должны помнить, что все клоны хранилища будут расходиться, и после этого их также следует перебазировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...