Привет! Написал небольшую заметку про то как работать с Git. Если кратко, то  git — распределённая система контроля версий, дающая возможность отслеживать изменения в файлах и работать с ними совместно с коллегами . Сейчас сложно представить продуктовую компанию не использующую систему совместной разработки проектов с открытым исходным кодом.  Кто — то выбирает и работает с Subversion, Perforce, Mercurial и рядом других систем управления контроля версий.

Об основах (база) работы с данной системой буду рассказывать на примере веб-сервиса GitHub. Сервис (социальная сеть для хранения кода) основан на git.

Использовать какие-то gui-клиенты не буду. А так вообще по работе использую Fork. Для того чтобы показать логику  все запросы буду осуществлять через консоль командной строки.

Для начала работы нужно завести учётную запись (зарегистрироваться) на GitHub. И создать репозиторий.

Репозиторий будет находиться по адресу: https://github.com/artoffwar/test.git

Далее установить терминальный клиент для работы с git — скачать по ссылке.  Установщик выбирайте в зависимости от вашей операционной системы. Выбрал для Windows 64-bit. В диалоговых окнах установки значения параметров, чек-боксов не менял, оставлял рекомендуемые. После установки на одном из системных дисков ( диск D) создал папку. Назвал Test_Git, перешёл в неё. Теперь надо указать нашей системе контроля версий что данная папка будет являться локальным репозиторием. Для этого нажимаем правой кнопкой мыши и выбираем Git Bash Here. Выполнение запустит bash консоль git в рабочей директории (Test_Git). Так выглядит консоль:

При первом запуске git необходимо выполнить две команды:

git config --global user.email "example@example.com"

example@example.com — указать почту с которой вы зарегистрировались на github.com

и вторая команда:

git config --global user.name "Your name"

Your name — указать login с которым вы зарегистрировались на github.com

При правильном вводе данных команд ошибок быть не должно.

Теперь укажем git что папка в которой мы сейчас находимся является репозиторием (нам нужно её инициализировать). Для этого выполним команду:

git init

В папке Test_Git появиться новая папка «.git», она будет скрытая.

Отлично. Теперь в нашей рабочей папке создадим какой-нибудь текстовый файл. К примеру noname.txt содержащий внутри себя строчку «It.Party».

В консоли введём команду:

git status

Увидим что в коммит ничего не добавлено. Так же noname.txt выделена красным — означает что на данный момент файл и его содержимое находится не под версионным контролем. Добавим файл под версионный контроль командой:

git add noname.txt

Снова проверяем статус. Увидим что коммитов по прежнему нету, а вот noname.txt позеленел. Файл встал под версионный контроль.

Теперь при помощи команды git commit -m "pervonax" берём слепок всех файлов под версионным контролем и отправляем в локальный репозиторий. В кавычках пишутся комментарии. Конечно не такой как у меня 🙂 хотя…

В начале статьи на веб-сервисе GitHub был создал репозиторий с именем test. Следующим шагом свяжем наш созданный локальный репозиторий с удалённым (https://github.com/artoffwar/test.git) командой:

git remote add origin https://github.com/artoffwar/test.git

Введя команду git remote -v посмотрим все удалённые репозитории которые связаны с нашим локальным. (убеждаемся в успешности действия шага выше).

Ок. Репозитории связаны. Теперь мне надо чтобы изменения в локальном репозитории передались на удалённый. Будем пушить: git push origin master

Если работаете с git в первый раз то после запроса вылезет окошко где необходимо будет указать валиды вашей учётки (login:psw).

Заходим на https://github.com/artoffwar/test.git получаем профит, файл добавился.

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

Ветки (branches) используются для разработки функциональности, изолированной от остальной. Ветка master используется по-умолчанию, когда вы создаете репозиторий. После завершения работы над функционалом производят слияние ветки с master. Основные команды:

git branch <имя ветки> – создание новой ветки;
git checkout <имя ветки> – переключение на ветку;
git checkout -b <имя ветки> – создание новой ветки и переключение на нее;
git branch -d <имя ветки> – удаление ветки;
git push origin<имя ветки> – отправить ветку в удаленный репозиторий.

Обновление и слияние:

git pull – изменения из удаленного репозитория обновляют ваш локальный репозиторий;
git merge <имя ветки> – слияние выбранной ветки с активной (отличия одной ветки от другой можно посмотреть командой git diff<имя ветки1> <имя ветки2>).

На сегодня это всё. Для тренировки работы с git могу порекомендовать интерактивный тренажер git.
Удачи!