Основы Git

Внизу документа прикреплены презентации по Git из замечательной книги Pro Git

Установка Git

В данной инструкции описывается работа с Git в Bash shell. Это такая терминальная среда или просто говоря командная строка. Все описанные ниже команды работают как в Linux, так и в Shell для Windows.

Сперва нужно установить Git, если он еще не установлен на вашем ПК. В Linux для этого открываем терминал и выполняем (знак $ копировать не надо - это просто обозначение команд терминала):

$ sudo apt-get install git
В случае с Windows необходимо несколько больше манипуляций. Git необходимо скачать и установить. Есть два варианта установки Git:
  1. Первый (более предпочтительный способ, т.к. избавляет от многих проблем с навигацией по папкам) это непосредственно обычная установка
  2. Второй - воспользоваться переносной версией Git, но с потерей некоторого удобного функционала.

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

Устанавливается Git для Windows из проекта http://git-scm.com/download/win. При установке оставляем все параметры по умолчанию. Единственное, необходимо проследить, чтобы при установке была включена опция "Git Bash here". Это даст возможность запускать Git bash из Проводника прямо в необходимой вам папке. Иначе придется осуществлять навигацию через сам Git bash, что может быть неудобно неопытным пользователям компьютера.

Теперь, чтобы приступить к работе с Git, необходимо в Проводнике Windows кликнуть правой кнопкой мыши по папке с вашим проектом, который вы хотите добавить в версионный контроль, и выбрать опцию Git bash here:

Другим вариантом получить Git является Git for Windows Portable. Он скачивается по той же ссылке, что и обычный Git. В этом случае устанавливать ничего не надо. Достаточно распаковать архив в удобную для вас директорию (желательно ближе к корню диска и чтобы весь путь к папке имел только латинские символы), а затем запустить в этой директории файл git-bash.exe

В любом случае, независимо от способа установки Git, перед вами должен открыться терминал примерно такого вида:

Дальнейшая работа уже ничем различается в разных операционных системах (ОС), поскольку будет использоваться консоль Shell, которая во всех ОС одинаковая.

Далее работаем в открывшемся терминале Git bash. После установки Git-у надо сообщить свое имя и email, поскольку без этой информации вы не сможете делать коммитов, т.к. каждый коммит (версия вашего проекта в определенный момент времени) должен содержать в себе автора этого коммита. Делается это также в терминале следующим образом:

$ git config --global user.name "Your name" 
$ git config --global user.email your@email.com

Навигация и работа в терминале

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

$ cd ~   # Переход в домашнюю директорию пользователя
$ cd /   # Переход в корневую директорию
$ cd ..  # Переход из текущей папки на один уровень выше
$ cd project_dir  # Переход из текущей папки в папку с именем project_dir
$ cd ../project_dir  # Сначала переходим на один уровень выше, а потом заходим в папку project_dir

Обратите внимание, что для навигации используются обычные прямые слэши /, а не обратные \ как в Windows.

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

$ ls   # Показать содержимое текущей папки
$ ls -la  # Используются специальные ключи l - показать в виде списка со свойствами, a - показать также скрытые файлы
$ ls project_dir  # Показать содержимое папки project_dir

Кстати, в Git bash есть удобный автокомплит. Если вы начали вводить команду или адрес в консоль и нажимаете клавишу tab, то консоль подставляет наиболее подходящую недостающую часть команды или адреса. Чтобы вставить в консоль скопированный текст, можно просто нажать в консоли средней кнопкой мыши. Чтобы выбрать какую-то старую команду, то можно сделать это клавишей up. Чтобы просмотреть всю историю команд в консоли используется команда history.

Думаю неплохо было бы объяснить понятия домашней и корневой директорий. Для пользователей Windows это довольно сложно к восприятию. Домашняя директория это папка пользователя, которая создается ОС и к ней имеет полный доступ только сам пользователь. В Windows по умолчанию это папка C:\Users\NameOfUser. Разумеется NameOfUser должно заменяться именем вашего пользователя. Собственно говоря, обычно (но не всегда) Git bash именно C:\Users\NameOfUser определяет как домашнюю директорию. Здесь все просто. Корневая директория представляет папку в которую устанавливается ОС Linux. Обозначается она одинарным слэшом /. В Git bash это просто папка, куда установлен сам Git bash.

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

$ cd ~    # Перемещаемся в домашнюю директорию
$ pwd     # Узнаем адрес текущей директории, чтобы точно знать что Git bash подразумевает под домашней директорией
$ ls -l   # Проверяем содержимое директории, чтобы убедиться в своей правоте
$ cd dir  # Начинаем перемещаться по иерархии папок

Если необходимо создать директорию, то используется команда mkdir:

$ mkdir dir_name   # Создаем папку с именем dir_name

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

$ touch new.html

Работа в Git

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

Теперь мы можем непосредственно приступить к версионному контролю вашего проекта. Сначала заходим в папку с проектом и выполняем команду инициализации пустого репозитория (если еще не создавали):

$ cd project_dir
$ git init

Кроме того, вы можете не инициализировать репозиторий, а склонировать готовый (адрес которого указан в настройках вашего проекта) и уже туда скопировать файлы вашего проекта:

$ git clone ssh://git@civnote.ru/name-of-repository.git

Адрес репозитория по умолчанию вы можете найти на главной странице вашего проекта на сайте в секции "Main Git Repository":

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

$ git add .

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

$ git status

Теперь вы можете сохранить новую версию вашего кода в Git или, если сказать по другому - закоммитить:

$ git commit -m "Init new project" 

Атрибут -m означает, что мы пишем комментарий к коммиту в теле самой команды. Разумеется, комментарии от коммита к коммиту должны изменяться. Если запустить git commit без -m, то запуститься текстовый редактор vim, где вам необходимо будет написать этот комментарий. Так что не отвертишься. Кстати, рекомендуется писать комментарии к коммиту как можно более подробно, чтобы потом при чтении истории проекта не возникало вопросов, что же вы делали в субботу вечером.

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

$ git log

Или в более удобном виде:

$ git log --pretty=format:"%h - %an, %ar : %s" 

Как переключаться между коммитами и создавать ветви

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

$ git checkout commit

commit - первые 4 (или более) символа контрольной суммы SHA-1, увидеть можно с помощью команды $git log. Постарайтесь ничего не изменять в проекте после переключения на более старый код, т.к. здесь требуется комбинация довольно хитрых шагов, без выполнения которых вы рискуете поломать репозиторий. Используйте такое переключение только для того, чтобы ознакомиться со старым кодом. Чтобы переключиться обратно на последний коммит, достаточно указать той же команде текущую ветку разработки:

$ git checkout master

В Git есть механизм, позволяющий создавать параллельную версию вашего кода, не затрагивая основной, и делать с ней всё, что душе угодно. Этот механизм основан на использовании ветвей. Для создания ветви используются команды:

$ git branch iss53
$ git checkout iss53

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

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

$ git checkout master
$ git merge iss53

Теперь изменения из iss53 попали в master.

После настройки Git вы можете перейти к настройке удаленного репозитория, как описано в статье Управление репозиториями.

picture411-1.png (10,214 КБ) Александр Дмитриев, 17.12.2014 22:28

gitbashhere.png (7,16 КБ) Дмитриев Александр, 20.11.2015 01:58

terminal.png (8,71 КБ) Дмитриев Александр, 20.11.2015 02:08

Git 1.ppt (731 КБ) Дмитриев Александр, 15.09.2016 20:41

Git ветвления.ppt (1,036 МБ) Дмитриев Александр, 15.09.2016 20:41

Git ветвления2.ppt (1,461 МБ) Дмитриев Александр, 15.09.2016 20:41

Добавить изображение из буфера обмена (Максимальный размер: 20 МБ)