# Git: autosquash ### Для чего это нужно? Во время ревью мы можем ожидать большого количества маленьких фиксов, которые после ревью хорошо бы объединить в один. На каждый из них, мы придумываем комментарий, что выглядит как ненужная работа. Для такого случая можно использовать флаг "--fixup", чтобы после сделать autosquash. И так пусть во время выполнения задачи, мы сделали пару коммитов ``` $ (dev) git commit -m "Feature A is done" [dev c5069d5] Feature A is done $ (dev) git commit -m "Feature B is done" [dev fb2f677] Feature B is done ``` После началось ревью, в процессе которого, нам нужно сделать некоторое количество исправлений. Для этого мы делаем коммит с флагом "--fixup [commit]", где [commit] - это номер коммита, к которому мы хотим сделать fixup. ``` $ (dev) git commit --fixup fb2f677 [dev] fixup! Feature B is done ``` Ревью успешно завершено, нам нужно сделать squash. Для этого мы делаем rebase с autosquash [commit], где [commit] - на 1 коммит раньше чем commit B. В нашем случае это A. ``` git rebase -i --autosquash c5069d5 ``` Осталось только сделать push --force и вспомнить, что забыли предупредить об этом команду и случайно стерли их изменения. ``` git push --force ``` По мотивам https://fle.github.io/git-tip-keep-your-branch-clean-with-fixup-and-autosquash.html ###### tags: `Git` 'squash'