Пакетное удаление удаленных коммитов из списка SHA-1 - PullRequest
0 голосов
/ 27 ноября 2018

Я хочу удалить много коммитов из моей истории репо.Под удалением я подразумеваю, что я хочу, чтобы они полностью исчезли из моего удаленного репозитория на GitLab.Чисто и просто.Нет истории, нет следа.Я знаю, что это не рекомендуется, но это дубликаты, и они содержат конфиденциальную информацию.

У меня есть список SHA-1, подобный этому:

3816b7652c4147216293d1fac3dee2f377417979
0f0a95f4d15a2a8d176f548bde47259956cbb859
90cd0dc615d6928460861da70f024039ce18e06f
f8a371aff5301c69825dbd6aec7898fb2c122a79
619dd79966ef4636134bc55f1ef3f03f94cb9dd4
a556b303021c2da0094d42605ce426ef9e74a765  
.  
.
.

Это коммиты, которые я хочу удалить.Они могут быть на ветке master или других ветвях.git rebase -i <SHA>^ может быть отличным инструментом, и я не против найти строки, соответствующие моему списку, вручную.Но когда я сохраняю файл git-rebase-todo, у меня возникают ошибки слияния.Я не хочу, чтобы их беспокоили, я просто хочу удалить коммиты, как будто их никогда не было.Вот и все.

1 Ответ

0 голосов
/ 27 ноября 2018

Вам понадобится комбинация:

  • git replace, чтобы заменить коммит его родителем (если родитель не является частью вашего списка), как показано здесь ;
  • git filter branch, чтобы сделать эту замену постоянной (кстати, изменяя все sha1 ваших оставшихся коммитов в процессе)

Это необходимобыть написанным на скрипте, так как это не встроенная функция в Git.

...