6 мин.

Настройка git

Доброе время суток. Давно хотел заикнуться про git, но как-то времени не было. И вот решил начать с самого начала: с настройки git. По идеи, после установки уже можно начинать работать с этой системой управления версиями без каких либо особых телодвижений. Но многие даже и не подозревают (или подозревают, но ленятся) насколько удобней будет работать с git’ом, если предварительно его немного помучать. Никаких хитрых действий не требуется, просто не все знают, что git может сделать работу ещё проще. И именно об этом я и постараюсь вам рассказать. Приступим.

Допустим, вы только что установили nginx на свой Debian и хотите приступить к разработке очередного проекта, но перед этим очень хотели бы поддержать версированность проекта и атомизировать все изменения (надо быть проще, ну и слова!). Тут на помощь приходит GIT; установить его просто:

$ apt-get install git

После этого можно сразу приступать к конфигурированию свежеиспечённого пакета. Но прошу обратить внимание, что у каждого пользователя системы могут быть свои конфигурации git’а, потому вносите все настройки из-под того пользователя для кого и настраиваете, а не из-под root.

Обязательные настройки git

Перед началом работы нужно обязательно указать автора будущих коммитов и его электронную почту. Делается это просто двумя командами:

$ git config --global user.name "Ivan Petrov"
$ git config --global user.email ivan_petrov@mail.ru

Это необходимо для того, чтобы возможно было найти автора того или иного коммита. При просмотре лога репозитория для каждого коммита указанно кто его сделал (name) и как его найти (email). Потому настоятельно рекомендую указывать реальные данные, чтобы вы не потерялись и вас смогли найти в случае чего. И обратите внимание, что менять эту информацию во время разработки проекта крайне нежелательно, поскольку может поломаться история и у проекта будут множественные авторы. Рекомендую хорошенько подумать и выбрать раз и на всегда одно имя и мыло.

Кастомные настройки git

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

Редактор по умолчанию

Для коммитов желательно указывать комментарии, иногда комментарий может быть большой и удобнее его набрать в редакторе. Обычно git использует стандартный редактор вашей системы: vi или vim. Не все его любят, потому есть возможность сменить редактор на любой другой, например, на nano:

$ git config --global core.editor nano

Цвета вывода команд

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

$ git config --global color.ui true

В случае, если стандартные цвета заставляют течь кровь из ваших глаз, то вы можете задать настройки цветов для каждой команды (branch, diff, interactive, status) отдельно и даже для отдельных частей вывода команды. Например, чтобы получить метаинформацию в выводе команды diff в синем цвете с чёрным фоном и жирным шрифтом, выполните следующую команду:

$ git config --global color.diff.meta "blue black bold"

При этом цвета могут быть следующие: normal, black, red, green, yellow, blue, magenta, cyan и white. А стили оформления: bold, dim, ul, blink и reverse. Богато!

Все поднастройки я перечислять тут не буду, но вы можете прочитать про них в мане по настройке git (в терминале man git config). В руководстве ищите раздел Variables, а в нём параметры color.

Кеширование пароля

Иногда за раз нужно выполнить несколько операций с удаленным репозиторием к ряду. И при этом каждый раз для каждой команды вы будете набирать имя и пароль. Это может утомить. И поэтому существует возможность закешировать пароль на небольшое время, чтобы система держала его в памяти и после первого ввода уже вас о нём не спрашивала. Чтобы установить эту настройку нужно ввести следующую команду:

$ git config --global credential.helper "cache --timeout=3600"

Соответственно, время задаётся в секундах и 3600 секунд – это один час. Т.е. на протяжении часа после первого ввода пароля git не будет более его просить.

Алиасы для команд

Для каждой команды в git можно установить краткое написани (алиасы), чтобы экономить время при их вводе. Кажется, что вещь бесполезная, но когда начинаешь активно пользоваться git’ом, то польза на лицо.

Алиасы можно устанавливать в самом git, например, вот несколько примеров:

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

Соответственно, каждому из выше перечисленных алиасу будут соответствовать следующие команды:

$ git co
$ git ci
$ git st
$ git br

Коротко, но не достаточно коротко! Устанавливая алиасы на уровне git’а вам всегда придётся писать вначале git, а потом сам алиас. Очень плохо. Если ваша операционная система поддерживает алиасы или шорткаты, то лучше установить их на этом уровне. Например, в Debian можно добавить алиасы в конец файла ~/.profile:

# ~/.profile
alias gs='git status '
alias ga='git add '
alias gb='git branch '
alias gc='git commit'
alias gd='git diff'
alias go='git checkout '
alias gl='git log --graph --abbrev-commit --decorate --date=relative --format=format:"%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)" --all'

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

Для справки. Все конфигурации, что были внесены командой git config записываются в файл .gitconfig, который находиться в вашей домашней директории. Вы можете его открыть в любом текстовом редакторе (например, nano ~/.gitconfig) и править напрямую без использования команды.

Название ветки в консоли

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

user@server:~/rep[develop]$

Чтобы это реализовать нужно добавить следующий код в конец файла ~/.profile:

# ~/.profile
parse_git_branch() {
  if ! git rev-parse --git-dir > /dev/null 2>&1; then
    return 0
  fi
  git_branch=$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')
  echo "[$git_branch]"
}

PS1="${debian_chroot:+($debian_chroot)}\[\033[01;36m\]\u@\h\[\033[00m\]:\[\033[01;32m\]\w\[\033[00m\]\[\033[01;31m\]\$(parse_git_branch)\[\033[00m\]$ "

Не забудьте перезапустить терминал, чтобы изменения вступили в силу.

Эта фича была стянута отсюда, потому если будут вопросы, то к автору. Но вообще, для этого используется переменная окружения PS1, которая и отвечает за внешний вид консоли. И в принципе, туда можно что угодно намешать. Подробнее об этом можно почитать тут.

Заключение

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

  • Git How To – это интерактивный тур, который познакомит вас с основами Git. Он весь на русском языке, потому его освоение не должно вызвать затруднение.
  • Try Git – курс обучения владением git в небезызвестной школе CodeSchool. В этом курсе вы будете выполнять задания, что позволит быстро обучиться основным премудростям, но правда, там всё на английском.

Если вы хотите увидеть простой пример рабочего процесса над проектом с помощью git, то рекомендую почитать эту статью.

На этом у меня всё. Надеюсь вам была полезна эта статья. С любыми вопросами, пожеланиями или предложениями в комментарии. Всем удачи и отсутствия коллизий!