---
# System prepended metadata

title: 'Git: autosquash'
tags: [Git]

---

# 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'