GIT (конспект): Базовый минимум
Навигация:
! ЗАПОМИНАЕМ !
Система контроля версий - это система, фиксирующая все изменения в файл (или набор файлов) в течении времени, позволяющая возвращаться позднее к определенной версии редактируемого файла (проекта).
основные команды
| Создание репозитория в существующем каталоге:
git init
| Клонирование существующего репозитория:
// клонировать сущ. репозиторий в текущую папку
git clone https://github.com/libgit2/libgit2
// создать папку mylibgit и клонировать сущ. репозиторий в нее
git clone https://github.com/libgit2/libgit2 mylibgit
| Просмотр состояние файлов в каталоге:
git status
| Добавить содержимое в индекс:
// добавление конкретного файла (можно несколько, через пробел)
git add <имя_файла>
// добавление всех новых, измененных и удаленных файлов в текущ. директории со всеми подпапками
git add .
// добавление всех измененных и новых файлов во всем репозитории, независимо в какой папке находимся
git add -A
git add --all
// добавление только уже отслеживаемые Git'ом файлы, обновление их состояния (новые неотслеживаемые файлы проигнорируются)
git add -u
git add --update
// (интерактивн. режим) Git покажет изменения по частям, спросит, какие именно строки или блоки хотим добавить
git add -p
git add --patch
| Работа с ветками:
// просмотр списка локальных веток (текущая отмечена звёздочкой)
git branch
// просмотр списка удаленных веток (в репозитории)
git branch -r
// просмотр списка всех веток (локальных и удаленных)
git branch -a
// создание новой ветки (и остаться на текущей)
git branch <имя_ветки>
// создание новой ветки (от конкретного коммита)
git branch <имя_ветки> <хэш_коммита>
// создание новой ветки (и переключиться на неё)
git checkout -b <имя_ветки>
git switch -c <имя_ветки>
// удаление ветки, если её изменения уже объединены с текущей
git branch -d <имя_ветки>
// принудительное удаление ветки (даже если изменения не слиты)
git branch -D <имя_ветки>
// переименование текущей ветки
git branch -m <новое_имя>
// переименование любой ветки
git branch -m <старое_имя> <новое_имя>
| Сохранение изменений:
// сохранение изменений с однострочным комментарием
git commit -m "Текст комментария"
// открытие текстового редактора (по умолчанию) для ввода многострочн. комментария
git commit
// автоматическое добавление в индекс (выполнить git add) все измененные существующ. файлы и закоммитить их
git commit -am "Текст комментария"
// перезапись предыдущего коммита (изменение сообщения или добавление новых правок к последнему коммиту)
git commit --amend
// добавление новых файлов/изменений к последнему коммиту (не меняя старое сообщение)
git commit --amend --no-edit
| Отправка изменений:
// отправка текущей ветки в привязанный репозиторий (работает только при уже настроенной ветке)
git push
// отправка конкретной ветки в указанный репозиторий
git push <репозиторий> <ветка>
| Сравнивание, работа с изменениями:
// сравнение раб. директории с индексом (отображение измененных, но еще не добавленных в коммит файлов)
git diff
// сравнение раб. директории с индексом, краткая сводка (какие файлы изменились, сколько строк добавлено/удалено)
git diff --stat
// краткая сводка текущ. изменений с игнорированием изменений, связанных с кол-ом пробелов и табуляций
git diff -w
// сравнение проиндексир. изменений с последним коммитом (показывает, что именно войдёт в следующий коммит)
git diff --staged
git diff --cached
// сравнение раб. директории с последним коммитом (включает подготовленные и неподготовленные изменения)
git diff HEAD
// отображение разницы между вершинами двух веток
git diff branch1 branch2
// сравнение текущ. состояния с состоянием 5 коммитов назад
git diff HEAD~5 HEAD
// отображение изменений в конкретном файле
git diff -- имя_файла
// отображение списка только измененных файлов (без содержимого)
git diff --name-only
// сравнение файла текущ. раб. директории с его версией в другой ветке
git diff branch_name -- имя_файла
| Удаление из индекса:
// удаление файла (из индекса и с диска)
git rm <имя_файла>
// удаление файла (из индекса, но не с диска)
git rm --cached <имя_файла>