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]