Первоначальная настройка
Установка:
1. # apt-get install git
2.ssh-keygen -o
3.cat ~/.ssh/id_rsa.pub
Настройка информации о пользователе для всех локальных репозиториев
$ git config --global user.name "[имя]"
Устанавливает имя, которое будет отображаться в поле автора у выполняемых вами коммитов
$ git config --global user.email "[адрес электронной почты]"
Устанавливает адрес электронной почты, который будет отображаться в информации о выполняемых вами коммитах
Создание репозитория
Создание нового репозитория или получение его по существующему URL-адресу
$ git init [название проекта]
Скачивает репозиторий вместе со всей его историей изменений
$ git clone [url-адрес]
Операции с файлами
Удаляет конкретный файл из рабочей директории и индексирует его удаление
$ git rm [файл]
Убирает конкретный файл из контроля версий, но физически оставляет его на своём месте
$ git rm --cached [файл]
Перемещает и переименовывает указанный файл, сразу индексируя его для последующего коммита
$ git mv [оригинальный файл] [новое имя]
Игнорирование некоторых файлов
Исключение временных и вторичных файлов и директорий
*.log
build/
temp-*
Git будет игнорировать файлы и директории, перечисленные в файле .gitignore с помощью wildcard синтаксиса
$ git ls-files --others --ignored --exclude-standard
Список всех игнорируемых файлов в текущем проекте
Сохранение фрагментов
Сохранение и восстановление незавершённых изменений
$ git stash
Временно сохраняет все незафиксированные изменения отслеживаемых файлов
$ git stash pop
Восстанавливает состояние ранее сохранённых версий файлов
$ git stash list
Выводит список всех временных сохранений
$ git stash drop
Сбрасывает последние временно сохранённыe изменения
Внесение изменений
$ git status
Перечисляет все новые или изменённые файлы, которые нуждаются в фиксации
$ git diff
Показывает различия по внесённым изменениям в ещё не проиндексированных файлах
$ git add [файл]
Индексирует указанный файл для последующего коммита
$ git diff --staged
Показывает различия между проиндексированной и последней зафиксированной версиями файлов
$ git reset [файл]
Отменяет индексацию указанного файла, при этом сохраняет его содержимое
$ git commit -m "[сообщение с описанием]"
Фиксирует проиндексированные изменения и сохраняет их в историю версий
Коллективная работа
$ git branch
Список именованных веток коммитов с указанием выбранной ветки
$ git branch [имя ветки]
Создаёт новую ветку
$ git checkout [имя ветки]
Переключается на выбранную ветку и обновляет рабочую директорию до её состояния
$ git merge [имя ветки]
Вносит изменения указанной ветки в текущую ветку
$ git branch -d [имя ветки]
Удаляет выбранную ветку
Просмотр истории
$ git log
$ git log --oneline
История коммитов для текущей ветки
$ git log --follow [файл]
История изменений конкретного файла, включая его переименование
$ git diff [первая ветка]...[вторая ветка]
Показывает разницу между содержанием коммитов двух веток
$ git show [коммит]
Выводит информацию и показывает изменения в выбранном коммите
Откат коммитов
$ git reset [коммит]
Отменяет все коммиты после заданного, оставляя все изменения в рабочей директории
$ git reset --hard [коммит]
Сбрасывает всю историю вместе с состоянием рабочей директории до указанного коммита.
Синхронизация с удалённым репозиторием
$ git fetch [удалённый репозиторий]
Скачивает всю историю из удалённого репозитория
$ git merge [удалённый репозиторий]/[ветка]
Вносит изменения из ветки удалённого репозитория в текущую ветку локального репозитория
$ git push [удалённый репозиторий] [ветка]
Загружает все изменения локальной ветки в удалённый репозиторий
$ git pull
Загружает историю из удалённого репозитория и объединяет её с локальной. pull = fetch + merge
Шпаргалка по git-flow
Установка
apt-get install git-flow
Инициализация
git flow init
Начало новой фичи
Разработка новых фич начинается из ветки "develop".
git flow feature start MYFEATURE
Завершение фичи
Окончание разработки фичи:
Слияние ветки MYFEATURE в "develop"
Удаление ветки фичи
Переключение обратно на ветку "develop"
git flow feature finish MYFEATURE
Публикация фичи
git flow feature publish MYFEATURE
Получение опубликованной фичи
Получение фичи, опубликованной другим пользователем.
git flow feature pull origin MYFEATURE
Вы можете отслеживать фичу в репозитории origin с помощью команды
git flow feature track MYFEATURE
Создание релиза
Начало релиза
Для начала работы над релизом используйте команду
git flow release
Она создаёт ветку релиза, ответляя от ветки "develop".
git flow release start RELEASE [BASE]
При желании вы можете указать [BASE]-коммит в виде его хеша sha-1, чтобы начать релиз с него. Этот коммит должен принадлежать ветке "develop".
Желательно сразу публиковать ветку релиза после создания, чтобы позволить другим разработчиками выполнять коммиты в ветку релиза. Это делается так же, как и при публикации фичи, с помощью команды:
git flow release publish RELEASE
Вы также можете отслеживать удалённый релиз с помощью команды
git flow release track RELEASE
Завершение релиза
Завершение релиза — один из самых больших шагов в git-ветвлени. При этом происходит несколько действий:
Ветка релиза сливается в ветку "master"
Релиз помечается тегом равным его имени
Ветка релиза сливается обратно в ветку "develop"
Ветка релиза удаляется
git flow release finish RELEASE
Не забудьте отправить изменения в тегах с помощью команды git push --tags
Исправления
git flow hotfix start
Как и в случае с другими командами git flow, работа над исправлением начинается так:
git flow hotfix start VERSION [BASENAME]
Аргумент VERSION определяет имя нового, исправленного релиза.
При желании можно указать BASENAME-коммит, от которого произойдёт ответвление.
Завершение исправления
Когда исправление готово, оно сливается обратно в ветки "develop" и "master". Кроме того, коммит в ветке "master" помечается тегом с версией исправления.
git flow hotfix finish VERSION