Ответ
Да, регулярно. Изменение истории коммитов — стандартная практика для поддержания ее чистоты и понятности перед тем, как отправить изменения в общий репозиторий.
- Исправление последнего коммита (
git commit --amend): Использую, чтобы добавить забытый файл или исправить сообщение коммита прямо перед пушем.# Добавил пропущенный файл и перезаписал коммит git add forgotten_feature.cpp git commit --amend -m "feat: add new parsing algorithm" - Перебазирование (
git rebase -i): Привожу в порядок серию локальных коммитов: объединяю (squash) несколько мелких коммитов в один логичный, переписываю сообщения (reword) или меняю порядок. Это делает историю более читаемой.git rebase -i HEAD~5 # Интерактивно редактирую последние 5 коммитов # В редакторе можно выбрать 'squash', 'reword', 'edit' - Изменение уже отправленных коммитов: Этого следует избегать в общей ветке (например,
main/master), так как это переписывает историю для всех. Однако в рамках своей feature-ветки перед созданием пулл-реквеста я всегда делаюrebaseна актуальнуюmainи привожу свои коммиты в порядок, чтобы ревьюверам было легче их читать.
Золотое правило: Изменять можно только ту историю, которую еще не видели другие (т.е. локальные или лежащие в вашей личной ветке коммиты).
Ответ 18+ 🔞
А, регулярно, блядь. Это ж как зубы почистить — нормальная практика, чтобы история не выглядела, будто её мартышлюшка накодила. Особенно перед тем, как тыкать свои творения в общий репозиторий, а то там коллеги начнут морщиться.
-
Исправляю последний коммит (
git commit --amend): Использую, когда в последний момент вспоминаю, что забыл файлик добавить, или сообщение коммита написано так, что самому стыдно. Чисто чтобы не позориться.# Добавил пропущенный файл и перезаписал коммит git add forgotten_feature.cpp git commit --amend -m "feat: add new parsing algorithm"Просто, быстро, и в истории не остаётся следов твоей криворукости. Удобно, ёпта.
-
Перебазирование (
git rebase -i): Вот это уже серьёзный инструмент, когда накодил кучу мелких коммитов типа «исправил опечатку», «ещё одну опечатку», «ой, всё». Беру и привожу это безобразие в божеский вид: склеиваю их в один нормальный, переписываю сообщения, чтобы было понятно. История сразу читается, как хорошая книга, а не как бред сумасшедшего.git rebase -i HEAD~5 # Интерактивно редактирую последние 5 коммитов # В редакторе можно выбрать 'squash', 'reword', 'edit'Сначала страшновато, но потом привыкаешь — красота же.
-
Изменение уже отправленного: А вот это, чувак, делать не надо в общей ветке типа
main. Это как на общей кухне переставить всем посуду в шкафу — народ охуеет и придёт тебя линчевать. Но! В своей собственной feature-ветке, перед тем как слать пулл-реквест, — святое дело. Сделалrebaseна свежуюmain, причесал свои коммиты, чтобы ревьюверы не плакали, глядя на этот пиздец. Уважение к коллегам, всё такое.
Главное правило, которое надо выжечь в мозгу: Менять можно только ту историю, которую ещё никто не видел. Свои локальные костыли — пожалуйста. Как только ты залил это на общий сервер и другие на это посмотрели — всё, пиши пропало. Дальше только вперёд, новые коммиты. Иначе будет вам хиросима, а не работа в команде.