Установка

В Debian/Ubuntu:

sudo apt-get install git

Термины

Термин Англ Определение

Рабочий каталог

working tree, working directory

Набор файлов в текущем каталоге

Репозиторий

repository, repo

Контейнер, хранящий историю изменений файлов проекта

Индекс

index, staging area

Область между рабочим каталогом и репозиторием, в котором осуществляется подготовка к фиксации

SHA-1

SHA-1

Уникальный идентификатор, отражающий информацию об истории

Ветка

branch

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

Фиксация (коммит)

commit

Набор файлов, записанных в историю одновременно

HEAD

HEAD

Имя ссылки на последнюю фиксацию в текущей ветке

Метка

tag

Именованная ссылка на некоторую фиксацию в истории

Состояния

Файлы в рабочем каталоге могут отслеживаться системой контроля версий (tracked) или нет (untracked). Отслеживаемые файлы, которые на диаграмме обозначены зелёным фоном, могут быть неизменёнными (unmodified), изменёнными (modified) или подготовленными к фиксации (indexed).

Diagram
Figure 1. Состояния

Основные команды, осуществляющие взаимодействие между рабочим каталогом, индексом, локальным и удалённым репозиторием, приведены на диаграмме.

Diagram
Figure 2. Команды

Пример последовательности действий, выполняемых пользователем в совместном проекте, приведён на диаграмме.

Diagram
Figure 3. Последовательность действий

Альтернативный пример действий, выполняемых пользователем в совместном проекте, приведён на диаграмме.

Diagram
Figure 4. Альтернативная последовательность действий

Настройка

Команда Ключи Описание

git config

--global user.name "John Doe"

Имя текущего пользователя

git config

--global user.email "mail@example.com"

Почта текущего пользователя

git config

--list

Вывод текущей конфигурации

git config

--global --list

Вывод глобальной конфигурации

Инициализация

Команда Ключи Описание

git init

<dir>

Создать пустой репозиторий в каталоге <dir>

git clone

<giturl> <dir>

Создать в каталоге <dir> копию репозитория, находящегося по адресу <giturl>

git clone

--recursive <giturl> <dir>

Создать в каталоге <dir> копию репозитория, находящегося по адресу <giturl>, с учётом подмодулей

Подмодули

Команда Ключи Описание

git submodule

add <giturl> <dir>

Добавить в каталог <dir> текущего репозитория подмодуль, находящийся по адресу <giturl>

git submodule

update --recursive --remote

Обновить подмодули

git submodule

sync --recursive

Заменить адреса подмодулей на указанные в файле .gitmodules

Удаление подмодуля:

git submodule deinit <path/to/submodule>
git rm <path/to/submodule>

Фиксация

Команда Ключи Описание

git add

<filename>

Подготовить файл <filename> к фиксации

git commit

Зафиксировать подготовленные файлы

git commit

-a

Зафиксировать все отслеживаемые файлы, которые были изменены

Удаление

Команда Ключи Описание

git rm

<filename>

Удалить файл из индекса и рабочего каталога

git rm

-f <filename>

Принудительное удаление файла

git rm

--cached <filename>

Удаление файла из проекта, но не из рабочего каталога

Информация

Команда Ключи Описание

git status

-s

Вывод информации о рабочем каталоге в краткой форме

git log

--oneline

Вывод журнала изменений в краткой форме

git ls-files

Вывод списка отслеживаемых и подготовленных файлов

Удалённый репозиторий

Команда Ключи Описание

git remote

-v

Список адресов удалённых репозиториев

git branch

-r

Список веток в удалённых репозиториях

git remote

add <name> <url>

Создать ссылку <name> на удалённый репозиторий, находящийся по адресу <url>

git remote

rename <old> <new>

Переименовать ссылку <old> на <new>

git remote

rm <name>

Удалить ссылку <name>

  • Обращение к удалённому репозиторию осуществляется по ссылке, создаваемой командой git remote

  • Команда git clone автоматически создаёт ссылку origin

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

Команда Ключи Описание

git push

<remote> <branch>

Отправить ветку <branch> в удалённый репозиторий <remote>

git push

<remote> --all

Отправить все ветки в удалённый репозиторий <remote>

git push

--d <remote> <branch>

Удалить ветку <branch> из удалённого репозитория <remote>

Получение изменений

Команда Ключи Описание

git fetch

<remote>

Получить изменения из всех веток репозитория <remote>, но не выполнять слияние

git fetch

<remote> <branch>

Получить изменения из ветки <branch> репозитория <remote>, но не выполнять слияние

git merge

<remote>/<branch>

Выполнить слияние с веткой <branch> репозитория <remote>

git pull

<remote>

Получение и слияние

Ветки

Команда Ключи Описание

git branch

-a

Список локальных и удалённых веток

git branch

Список локальных веток

git branch

<branch>

Создать ветку <branch>

git checkout

<sha-1>

Перейти к фиксации с идентификатором <sha-1>

git branch

-m <old> <new>

Переименовать ветку <old> в <new>

git merge

<branch>

Слить изменения из ветки <branch> в текущую ветку

git branch

-d <branch>

Удалить ветку <branch>

Сравнение

Команда Ключи Описание

git diff

Сравнить рабочий каталог и индекс

git diff

–-cached

Сравнить индекс и последнюю фиксацию

git diff

HEAD

Сравнить последнюю фиксацию и рабочий каталог

git diff

--stat

Краткий вывод результатов

git diff

<sha-1> <sha-1>

Сравнить две точки с указанными идентификаторами

git diff

<dir> <file>

Сравнивать только указанный каталог <dir> или файл <file>

git difftool

Отобразить результаты сравнения в программе, определяемой переменной diff.tool