Git и GitHub

Что такое Git?

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

Git позволяет размещать исходные тексты на удаленных серверах типа Bitbucket, Gihtub и даже Google Code. Можно взять свой код с удаленного сервера на локальный компьютер, отредактировать и закачать его назад. Чем-то похоже на облачное хранилище, типа Dropbox, но для кода.

Что такое GitHub?

Cайт github.com позиционируется как веб-сервис хостинга проектов с использованием системы контроля версий git, а также как социальная сеть для разработчиков.

Пользователи могут создавать неограниченное число репозиториев, для каждого из которых предоставляется wiki, система issue tracking-а, есть возможность проводить code review и многое другое. 

Важно!

Git = GitHub

Возможности Git:

  1. Контроль версий программ
    - автоматическое резервное копирование текущей версии программы и соответствующих исходных кодов;
    - удобная сводка внесенных изменений;
    - интеллектуальное отслеживание противоречащих друг другу изменений;

  2. Совместная разработка программы группой программистов:
    - контроль ответственности: кто, когда и какие изменения внес в исходный код;
    - статистика вклада участников в разработку проекта;

  3. Создание версий разработки
    - проведение экспериментов, не затрагивая основного кода программы;
    - совместная модульная разработка: отдельные модули, которые в дальнейшем включаются в общий проект;
    - легкое управление версиями: слияние версий в основной проект, перемещение версий, удаление версий;

Установка Git

Настройка Git в первый раз

git config --global user.name "Your Name"
git config --global user.email "youremail@domain.com"

Создание нового проекта

git init

(Создание нового локального репозитория)

git status

Проверка состояния репозитория

Подготовка и Коммит

git add <имя_файла>
или
git add .

Чтобы подготовить изменения (добавить их в Индекс) используйте

git commit -m "Описание коммита"

Это первый шаг в основном рабочем процессе. Сделать коммит подготовленных изменений можно командой

Теперь изменения закреплены в локальном репозитории.

Рабочий процесс

Ваш локальный git репозиторий состоит из трех "сущностей". Рабочий каталог (Working Directory) содержит файлы. Индекс (Index) или область подготовленных файлов (Staging Area), содержит информацию о том, что должно войти в следующий коммит и HEAD указывает на последний коммит что вы сделали.

История

Получение списка произведенных изменений — функция команды git log

git log
git log
commit fa3c1411aa09441695a9e645d4371e8d749da1dc
Author: Alexey  Kalyuzhnyi
Date:   Wed Mar 9 

    Added HTML header

commit 8c3228730ed03116815a5cc682e8105e7d981928
Author: Alexey  Kalyuzhnyi
Date:   Wed Mar 9 

    Added standard HTML page tags

результат

Отправка изменений

Чтобы отправить эти изменения в ваш удаленный репозиторий, выполните.

git push origin master

Если вы еще не клонировали существующий репозиторий и хотите подключить ваш к удаленному, вам нужно на GitHub создать новый репозиторий, для этого переходим по ссылке https://github.com/new и потом добавляем его, выполнив

git remote add origin <адрес_сервера>

Теперь вы можете отправлять изменения на удаленный репозиторий. Для этого нужно будет ввести логин и пароль от вашего GitHub

Можно изменить master на любую другую ветвь чтобы отправить изменения на неё.

Работа с удаленным репозиторием

Получить список удаленных репозиториев

git remote

Добавление удаленного репозитория.

git remote add origin <адрес_сервера>

Заливка файлов в удаленный репозиторий. (Попросит ввести логин и пароль)

git push origin master

Переименование и удаление удаленного репозитория

git remote rename староеИмя новоеИмя
git remote rm имя
git push --all

Ветвление

Ветки используются для разработки функционала изолированного от остального. Ветка master используется по умолчанию когда вы создаете репозиторий. Используйте другие ветки для разработки и слияние в master когда разработка завершена.

git branch feature_x

Создать новую ветку с названием “feature_x”  можно командой

git push origin <имя_ветки>

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

git checkout -b feature_x

Создать новую ветку с названием “feature_x” и сразу переключиться на неё можно командой

git branch -d feature_x

удалить ветку

git merge <имя_ветки>

Для того чтобы слить другую ветку с активной (например master), используйте команду

git пытается автоматически слить изменения. К сожалению, это не всегда возможно и результатом станет конфликт. Вы ответственны за разрешение возникших конфликтов

Слияние

git diff <имя_ветки> <имя_другой_ветки>

перед слиянием вы можете предварительно посмотреть на изменения

git checkout -b gh-pages

Чтобы мы могли “смотреть” наши репозитории по ссылке типа http://alexcss.github.io/css-diner-shopping-list/ (где css-diner-shopping-list это имя репозитория, а alexss ваш логин) нужно создать ветку gh-pages

Ветка GitHub pages (gh-pages)

git merge master

синхронизировать gh-pages c master

git push origin gh-pages

отправить ветку на сервер.

git checkout gh-pages && git merge master && git checkout master && git push --all

Эти команды можно объединить в одну строку

git checkout master

вернуться в master

Git и GitHub

By Alexey Kalyuzhnyi