ITKUP
Личный блог на тему разработки, IT. Учусь, записываю, анализирую.

GIT (конспект): Базовый минимум

Спасибо, что в свое время (когда я начинал работать программистом), старшие коллеги сразу познакомили меня с таким великим инструментом как "система контроля версий", а именно 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 <имя_файла>

Cookie-файлы
Настройка cookie-файлов
Детальная информация о целях обработки данных и поставщиках, которые мы используем на наших сайтах
Аналитические Cookie-файлы Отключить все
Технические Cookie-файлы
Другие Cookie-файлы
Мы используем файлы Cookie для улучшения работы, персонализации и повышения удобства пользования нашим сайтом. Продолжая посещать сайт, вы соглашаетесь на использование нами файлов Cookie. Подробнее о нашей политике в отношении Cookie.
Понятно Подробнее
Cookies