Гит
Очистить историю коммитов с помощью Git Interactive Rebase
Переписать коммиты через git rebase
Всякий раз, когда мы работаем над чем-то, мы просматриваем нашу работу после завершения, прежде чем представить ее нашей аудитории. Точно так же наш код нуждается в проверке нашими коллегами, прежде чем он попадет в производственную систему.
Внося запрошенные коллегами изменения, очень важно поддерживать чистоту нашей истории коммитов.
Как новичок, я добавлял новую фиксацию, чтобы скорректировать запрошенное изменение. Но это делает историю коммитов уродливой. С помощью интерактивной перебазировки git вы можете решить эту проблему и сохранить свои коммиты в чистоте.
В этом посте я поделился несколькими вариантами использования интерактивной перебазировки git.
Корректировка запрошенных коллегами изменений
Наши коллеги проверяют наш код, прежде чем он попадет в производственную систему. Когда команда запрашивает изменения, мы можем скорректировать запрошенные изменения напрямую, отредактировав конкретный коммит. Например, наш коллега запрашивает изменения в сообщении коммита Optimize bulk endpoint
.
Мы можем отредактировать эту фиксацию, используя git rebase -i main
. Откроется окно редактора со списком всех коммитов. Мы можем выбрать, какое действие выполнять для какой фиксации. Поскольку нам нравится edit
вторая фиксация, мы выберем e or edit
, как показано ниже.
После того, как мы внесем все запрошенные изменения, мы можем зафиксировать наши изменения, выполнив следующие команды.
git add . git rebase --continue
Объединить несколько коммитов в один
Интерактивная перебазировка также позволяет нам объединять несколько коммитов в один с помощью команды squash
. Я использую эту функцию в следующих сценариях.
- Иногда я не знаю, как организовать свои коммиты, поэтому добавляю временные коммиты. По мере того, как я продвигаюсь к своей задаче, картина проясняется. Как только все становится ясно, я объединяю эти временные коммиты в один осмысленный коммит.
- Иногда хочется попробовать что-то новое. Прежде чем экспериментировать с новыми вещами, я добавляю временную фиксацию. Если мой эксперимент увенчается успехом, я объединю его со своей предыдущей работой или в противном случае все отброшу.
Вы можете объединить коммиты, используя git rebase -i main
, и использовать s or squash
против коммита, который вы хотите объединить, как показано ниже.
Это приведет к следующему окну.
Нам нужно выбрать, какое сообщение коммита мы хотим сохранить, а какое игнорировать, используя #
, как показано ниже.
После сохранения git объединяет 2 коммита в один.
Удаление коммита
Мы можем удалить конкретную фиксацию, используя команду d or drop
для конкретной фиксации, как показано ниже.
Я использую эту функцию, когда неясно, примут ли мои коллеги мою работу или нет. В идеале, я обсуждаю это с командой, прежде чем работать над этим.
Но если коллеги заняты и изменения не отнимают много времени, делаю это отдельным коммитом. Таким образом, мне будет легко отказаться от моей работы, если это потребуется.
Спасибо за прочтение.
Повышение уровня кодирования
Thanks for being a part of our community! More content in the Level Up Coding publication. Follow: Twitter, LinkedIn, Newsletter Level Up is transforming tech recruiting 👉 Join our talent collective