10 полезных советов по работе с Git

Git — бесплатная распределенная система контроля версий с открытым кодом. Она была создана для эффективного управления как маленькими, так и очень большими проектами.

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

1. Псевдонимы (алиасы) Git

Создавайте собственные псевдонимы для длинных команд, которым часто пользуетесь. Это сэкономит вам немного времени.

git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch

Вместо того чтобы набирать git checkout master, вам придется набрать только git co master.

Редактировать команды можно напрямую, в файле ~/.gitconfig:

[alias]
    co = checkout
    ci = commit
    br = branch

2. Сравнение коммитов

Увидеть различия между коммитами или разными версиями одного и того же файла можно при помощи команды git diff.

Если хотите сравнить один и тот же файл в разных коммитах, запустите следующую команду:

git diff $start_commit..$end_commit -- path/to/file

Сравнение изменений между двумя коммитами:

git diff $start_commit..$end_commit

Эти команды открывают просмотр diff прямо в терминале. Если вы предпочитаете более визуальные инструменты, можно использовать git difftool. Для визуального сравнения различий есть полезный инструмент просмотра и редактирования — Meld.

Настройка Meld:

git config --global diff.tool git-meld

Как начать просматривать diff-ы:

git difftool $start_commit..$end_commit -- path/to/file

Или:

git difftool $start_commit..$end_commit

3. Прячем изменения, не вошедшие в коммит

Если вы работаете над какой-то фичей, и вдруг приходится срочно вносить изменения в тот же проект, вы можете столкнуться с проблемой. Вы не хотите коммитить незаконченную фичу, но и потерять все внесенные изменения тоже не хотелось бы. Решение на этот случай — временно убрать эти изменения с глаз долой при помощи команды git stash.

Команда git stach прячет изменения, после чего вы получаете чистую рабочую директорию и возможность переключиться на новую ветку. Там вы можете вносить нужные изменения, не делая перед этим бессмысленных снапшотов для сохранения текущего состояния.

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

git stash pop

Все ваши изменения восстановятся.

Если эти изменения больше не нужны и вы хотите очистить стек вашего «тайника», запустите следующую команду:

git stash drop

4. Делайте pull почаще

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

5. Автодополнение команд

Используя скрипты completion, вы можете быстро создать команды для bash, tcsh и zsh. Тогда при наборе git pull достаточно будет набрать git p и нажать Tab. Вы увидите список всех команд, начинающихся на p:

pack-objects   -- create packed archive of objects
pack-redundant -- find redundant pack files
pack-refs      -- pack heads and tags for efficient repository access
parse-remote   -- routines to help parsing remote repository access parameters
patch-id       -- compute unique ID for a patch
prune          -- prune all unreachable objects from the object database
prune-packed   -- remove extra objects that are already in pack files
pull           -- fetch from and merge with another repository or local branch
push           -- update remote refs along with associated objects

Чтобы вывести все доступные команды, введите git, а затем нажмите Tab + Tab.

6. Установите .gitignore глобально

Если вы не хотите случайно отправить в коммит файлы типа .DS_Store или swp-файлы Vim, вы можете настроить файл .gitignore глобально.

Создание файла:

touch ~/.gitignore

Затем запускаете:

git config --global core.excludesFile ~/.gitignore

Или вручную добавляете следующее в ваш ~/.gitconfig:

[core]
  excludesFile = ~/.gitignore

Вы можете составить список вещей, которые Git должен игнорировать. Узнать больше можно в документации по gitignore.

От редакции Techrocks: также рекомендуем статью «Как удалить конфиденциальный файл из истории коммитов на GitHub».

7. Удаляйте локальные ветки, которые были удалены из удаленного репозитория, при fetch/pull

наверняка в вашем локальном репозитории есть куча веток, которых больше нет в удаленном. Чтобы удалять их при каждом fetch/pull, выполните следующую команду:

git config --global fetch.prune true

Или вручную добавьте следующие строки в ваш файл ~/.gitconfig:

[fetch]
  prune = true

От редакции Techrocks: также рекомендуем статью «Как удалить ветку в Git».

8. Используйте git blame более эффективно

Git blame очень удобная команда для поиска автора изменений в отдельных строках кода. Команда имеет разные флаги, позволяющие вывести разную информацию:

git blame -w  # ignores white space
git blame -M  # ignores moving text
git blame -C  # ignores moving text into other files

9. Алиас HEAD

Символ @ — то же самое, что и HEAD. Его очень удобно использовать при rebase:

git rebase -i @~2

10. Сброс изменений в файлах

От редакции Techrocks. В оригинальной статье по этому пункту были серьезные замечания в комментариях. Поэтому предлагаем вам почитать отдельную статью на тему отмены ненужных изменений — «Как это отменить?! Git-команды для исправления своих ошибок».

Перевод статьи «10 useful Git tips to improve your workflow».

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

Прокрутить вверх