Видалення історії комітів Git (як локальної, так і віддаленої)
Хоча більшість із нас знають, що ми ніколи не повинні передавати будь-яку конфіденційну інформацію до сховища вихідного коду (будь то Git, Subversion чи будь-який інший), бувають випадки, коли це трапляється.
Здебільшого, я думаю, це трапляється щоразу, коли ми працюємо над кодом, а потім стрибаємо туди-сюди між IDE та терміналом і фіксуємо код, щоб переконатися, що ми не втрачаємо жодних змін.
Це відбувається досить довго, а потім ми закріплюємо ключ споживача та секрет споживача, або ім’я користувача та пароль, чи щось подібне до сховища.
На щастя, ми можемо видалити коміти, щоб повернути наш код, але більшість систем керування джерелами зрештою зберігають історію всього (що добре). Але що, якщо нам потрібно видаляти історію комітів Git як у локальному, так і у віддаленому сховищах?
Видалення історії комітів Git
Для цього прикладу я припускаю, що ви працюєте з Git і працюєте з командним рядком (хоча я припускаю, що більшість графічних інтерфейсів дозволяють це робити).
Далі я припускаю, що комміт, який ви хочете видалити зі своєї історії, є останнім комітом, і ви просто хочете повернутися на один крок назад.
Щоб повністю видалити історію комітів git, вам потрібно зробити лише дві речі:
- перебазувати до попереднього коміту,
- просунути гілку до пульта.
Для цього перевірте два середніх кроки тут :
# First, review the history. (Gotta make sure you're going to roll back to the right place!)
$ git log --pretty=oneline --abbrev-commit
# Remove HEAD back to the commit prior to the one that has sensitive information
# and set equal to the last good commit.
$ git rebase -i HEAD~1
# Push the content to the remote repository and remove it from the history.
$ git push origin +<name of branch>
# If you want to review the history...
$ git log --pretty=oneline --abbrev-commit
Додаткові кроки до та після основних комітів дозволяють отримати візуальний список комітів на випадок, якщо ви захочете вибрати окремий коміт, до якого потрібно відкотитися.
І ви можете запустити команду як до, так і після двох інших команд (як показано в суті вище), щоб переконатися, що список комітів відображається в історії проекту так, як вам потрібно.