Все свои проекты я вел на 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. Если кто-то что-то нашел удобное – поделитесь советом пожалуйста.