Пробуем git на вкус

Все свои проекты я вел на SVN, но сейчас стала необходимость использовать именно git. Решил разобраться в вопросе и параллельно написать инструкцию-напомниналку.

Мне сразу порекомендовали вот этот ресурс, ну что ж с него и начнем обучение. Тут сразу идут инструкции по установке:

apt-get install git-core

не совсем понимаю зачем именно git-core, а не просто git. Ну ладно, сделаем все по инструкции. Есть. Переходим на следующий шаг – задаем необходимые настройки:

git config --global user.name "Your Name"
git config --global user.email "your_email@whatever.com"

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

git config --global core.autocrlf input
git config --global core.safecrlf true

Настройки закончены, теперь создаем репозиторий: создадим папочку для этого git_test, а в ней html файл git_test.html. и выполним в ней команду:

git init

получим следующее сообщение “Initialized empty Git repository in …“. Теперь добавим в репозиторий наш файл git_test.html и закомитим его:

git add git_test.html
git commit -m "First Test Commit"

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

Команда получения статуса:

git status

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

git add git_test.html

и еще раз запросим статус. Ну и снова коммит. Так дальше в учебнике скучно: разные вариант add & commit.

Перейдем к просмотру истории:

git log

Есть много дополнительных параметров, которые могут фильтровать вывод. Но у нас ведь учебник, а не справочник, поэтому не распыляемся и идем дальше.

Рассмотрим полезную фишку, такую как алиасы. Наверняка вы уже работали с алиасами команд в SVN: commit – co, update – up. Чтобы git у нас заработал также необходимо внести изменения в его конфиг (~/.gitconfig) – добавить следующие строчки:

[alias]
  co = checkout
  ci = commit
  st = status
  br = branch
  hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
  type = cat-file -t
  dump = cat-file -p

Также понравился алиас, которые рекомендуют в учебнике:

go <branch>  //go - git checkout

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

git checkout имя_ветки

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

git checkout имя_тега

Создание тега:

git tag v1

Просмотреть все тэги можно так:

git tag

Откатить изменения в файле можно опять же с помощью команды checkout:

git checkout имя_файла

Чтобы откатить изменения уже добавленного файла:

git reset HEAD имя_файла

Чтобы откатить уже коммит:

git revert HEAD

Крайне важный момент для git – сливание веток. Чтобы выполнить данную операцию необходимо переключится на ветку, в которую будем сливать другую и делаем merge:

git checkout style
git merge master

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

И еще пока не нашел хорошего GUI клиента для git под Ubuntu. Если кто-то что-то нашел удобное – поделитесь советом пожалуйста.