Предполагая, что измененное содержание также не является чувствительным, то это мощи работы: проверка нового филиала коммит, который вы хотите изменить, изменить файл, а затем использовать неинтерактивную Rebase что сохраняет слияния всех после того, как ранее не-поправка фиксации обратно на новом измененную фиксацию:
# Checkout a branch "fix" at the commit STUPID
git checkout -b fix STUPID
# Make your file changes...
# Amend STUPID
git add .
git commit --amend -m "REDACTED MWA-HA-HA!"
# Do the BIGGEST rebase that you'll probably ever do in your entire life!
git rebase --preserve-merges --onto fix STUPID master
# or `-p` for short
git rebase -p --onto fix STUPID master
# Verify that the only difference between master and [email protected]{1}
# is the amended content:
git diff [email protected]{1} master
после того, как вы убедились, что единственное различием между master
до и после перебазирования является измененным содержанием, вы будете возможно, хочу чтобы очистить ваши локальные и удаленные репозитории старых фиксаций Истечение ваш reflog и работает git gc
:
git reflog expire --expire=now --all
git gc --prune=now
Вы можете прочитать любые другие шаги очистки, которые могут понадобиться, чтобы сделать в следующем:
- Remove sensitive files and their commits from Git history.
- GitHub: Remove sensitive data.
Кстати, пожалуйста, проверьте перебазироваться на другой локальный клон первого, прежде чем попробовать это на единственном экземпляре вашего репо, что у вас есть ... в случае, если что-то пойдет не так.
О, да, я почти забыл, если ваша поправка в STUPID
вызывает конфликты с коммитами, которые перестраиваются поверх нее, вам нужно исправить эти конфликты во время переустановки.
Это 1337 ГИТ-фу принес к вам любезноКекс: Performing операции на открытом сердце по GIT сделкам РЕПО с 2012 года;)
ли измененное содержание также не "чувствительны"? –
Код содержит файл кода для тестового проекта с лицензионным ключом, который мы хотим заменить прокладкой. Мы можем исправить тесты с помощью новой фиксации –