Подтвердить что ты не робот

Как я могу полностью удалить/уничтожить коммиты из репозитория git?

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

У меня есть репозиторий git, и в какой-то момент один из программистов случайно каким-то образом привел код из другого репозитория, и вся история этого (ранее несвязанного) репозитория теперь является частью моих репозиториев войти.

Взглянув на коммиты, очень ясно, что точное коммитирование, которое "ввело" эту историю из ранее несвязанного репо.

После указанного фиксации мы не касались ни одного из этих файлов.

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

Если это помогает, структура выглядит примерно так:

  • фиксируется после 1234 (более поздняя версия), не трогайте какие-либо неправильные файлы, введенные в 1234

  • commit 1234 - содержит пару файлов, связанных с нашей базой кода, а также объединяет всю историю несвязанного репо

  • совершает до 1234 (ранее вовремя) теперь представляет собой комбинацию наших собственных коммитов, а также фиксации несвязанного репо.

4b9b3361

Ответ 1

Вам нужно сделать интерактивную перезагрузку:

git rebase -i <hash-of-the-commit-1034>~

Удалите фиксатор 1034 из списка. Запустите git сборщик мусора:

git gc

Нажмите вверх по течению:

git push -f

Это очистит фиксацию 1034 от вашего репо.