Гит

Очистить историю коммитов с помощью Git Interactive Rebase

Переписать коммиты через git rebase

Всякий раз, когда мы работаем над чем-то, мы просматриваем нашу работу после завершения, прежде чем представить ее нашей аудитории. Точно так же наш код нуждается в проверке нашими коллегами, прежде чем он попадет в производственную систему.

Внося запрошенные коллегами изменения, очень важно поддерживать чистоту нашей истории коммитов.

Как новичок, я добавлял новую фиксацию, чтобы скорректировать запрошенное изменение. Но это делает историю коммитов уродливой. С помощью интерактивной перебазировки git вы можете решить эту проблему и сохранить свои коммиты в чистоте.

В этом посте я поделился несколькими вариантами использования интерактивной перебазировки git.

Корректировка запрошенных коллегами изменений

Наши коллеги проверяют наш код, прежде чем он попадет в производственную систему. Когда команда запрашивает изменения, мы можем скорректировать запрошенные изменения напрямую, отредактировав конкретный коммит. Например, наш коллега запрашивает изменения в сообщении коммита Optimize bulk endpoint.

Мы можем отредактировать эту фиксацию, используя git rebase -i main. Откроется окно редактора со списком всех коммитов. Мы можем выбрать, какое действие выполнять для какой фиксации. Поскольку нам нравится editвторая фиксация, мы выберем e or edit, как показано ниже.

После того, как мы внесем все запрошенные изменения, мы можем зафиксировать наши изменения, выполнив следующие команды.

git add .
git rebase --continue

Объединить несколько коммитов в один

Интерактивная перебазировка также позволяет нам объединять несколько коммитов в один с помощью команды squash. Я использую эту функцию в следующих сценариях.

  1. Иногда я не знаю, как организовать свои коммиты, поэтому добавляю временные коммиты. По мере того, как я продвигаюсь к своей задаче, картина проясняется. Как только все становится ясно, я объединяю эти временные коммиты в один осмысленный коммит.
  2. Иногда хочется попробовать что-то новое. Прежде чем экспериментировать с новыми вещами, я добавляю временную фиксацию. Если мой эксперимент увенчается успехом, я объединю его со своей предыдущей работой или в противном случае все отброшу.

Вы можете объединить коммиты, используя 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