Команды Git, которые стоит начать использовать уже сегодня

В новых версиях Git появились команды, которые делают работу с Git более удобной и безопасной. Посмотрим наиболее полезные:


--word-diff для команды git diff

Проблема

Иногда необходимо увидеть различия между ветками, например, между вашей локальной веткой и веткой origin/master.
Для этого можно использовать команду:

git diff origin <branch name>

Однако стандартный вывод команды git diff отображает изменения в виде блоков кода, что может быть трудно воспринимать, особенно при больших изменениях.

Решение

Использование флага --word-diff с командой git diff позволяет увидеть различия на уровне слов, что делает просмотр изменений более наглядным и читаемым.

Пример использования:

git diff origin/main --word-diff

git switch — безопасная смена веток

Проблема

Ранее для смены веток использовалась команда git checkout, которая выполняла множество функций: переключала ветки, восстанавливала файлы, создавала новые ветки. Это могло привести к путанице и ошибкам.

Решение

С появлением Git 2.23 задачи разделены. Команда git switch отвечает исключительно за работу с ветками:

# Переключение на существующую ветку
git switch feature-branch

# Создание и переключение на новую ветку
git switch -c new-branch

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


git restore — безопасное откатывание изменений

Проблема

До появления Git 2.23 для отмены изменений чаще всего использовали команду git reset. Однако она могла повлиять не только на рабочий каталог, но и на индекс, а в некоторых случаях даже изменить историю коммитов. Это создавало риски случайных ошибок.

Решение

С выходом Git 2.23 появилась команда git restore, которая делает процесс отката изменений проще и безопаснее.

# Отменить изменения в рабочей директории
git restore main.js

# Убрать изменения из индекса
git restore --staged main.js

# Восстановить файл из предыдущего коммита
git restore --source=HEAD~1 file.txt

Команда позволяет работать только с файлами, не затрагивая управление ветками.


git maintenance — автоматическое обслуживание репозитория

Проблема

С течением времени большие репозитории могут начать работать медленнее. Ранее для поддержания производительности необходимо было вручную запускать такие команды, как git gc или git repack.

Решение

С выходом Git 2.29 появилась команда git maintenance, которая автоматизирует процессы обслуживания репозитория:

# Включить автоматическое обслуживание
git maintenance start

# Выполнить обслуживание вручную
git maintenance run

Что она делает:

  • Сбор мусора: удаляет недоступные объекты, такие как удалённые коммиты.
  • Упаковка: оптимизирует хранение данных, объединяя файлы пакетов.
  • Обновление графа коммитов: ускоряет команды вроде git log и git blame.

Более безопасный force push

Проблема

Использование команды git push с флагом --force (или -f) перезаписывает историю и может привести к потере чужих изменений.

Решение

Флаг --force-with-lease проверяет, были ли изменения на сервере с момента вашего последнего пуша, и предотвращает случайное перезаписывание чужих коммитов:

git push --force-with-lease

Просмотр веток или логов с использованием git column

Проблема

Стандартный вывод git branch или git log в виде длинного списка неудобен для быстрого поиска информации.

Решение

Команда git column выводит информацию в виде столбцов, улучшая читаемость:

git branch | git column --mode=column --padding=2

Теперь информация о ветках отображается компактно и удобно для просмотра.