Полезная шпаргалка по командам Git

Git — это мощная система контроля версий, которая позволяет отслеживать изменения в файлах вашего проекта. Можно провести аналогию с сохранением прогресса в компьютерных играх: в Git «сохранение» называется коммитом.

Важно помнить, что процесс добавления файлов к «сохранению» в Git состоит из двух шагов: сначала файл добавляется в индекс с помощью команды git add, а затем выполняется коммит с git commit.

Каждый файл в директории репозитория может находиться под версионным контролем или быть неотслеживаемым.

Отслеживаемые файлы могут находиться в одном из трёх состояний:

Неизменённые — файлы, которые не изменялись с момента последнего коммита.
Изменённые — файлы, в которых были внесены изменения, но они ещё не проиндексированы.
Проиндексированные — файлы, подготовленные для следующего коммита.

Ключ к пониманию Git заключается в знании о трёх «деревьях»:

Рабочая директория — файловая система проекта, включающая файлы, с которыми вы работаете.
Индекс — список файлов и директорий, отслеживаемых Git, и промежуточное хранилище изменений (редактирование, удаление).
Директория .git/ — содержит все данные контроля версий, включая историю разработки, коммиты, ветки, теги и другие элементы.
Коммит — это «сохранение» изменений в проекте, включающее набор правок, сделанных в рабочей директории после предыдущего коммита. Коммиты неизменны и не могут быть отредактированы. Каждый коммит, за исключением первого, имеет одного или нескольких родительских коммитов, так как они фиксируют изменения от предыдущих состояний.

Простейший цикл работы с Git:

Редактирование, добавление и удаление файлов.
Индексация изменений (git add) — указание Git, какие изменения нужно закоммитить.
Коммит (git commit) — фиксация изменений.
Возврат к шагу 1 или окончание работы.


Указатели в Git:

HEAD — указатель на текущий коммит или ветку, определяющий родителя для следующего коммита.
ORIG_HEAD — указатель на коммит, с которого только что был перемещён HEAD (например, после команды git reset).
Ветка (например, master, develop) — указатель на коммит, который перемещается на новый коммит после каждого добавления.
Теги — простые указатели на коммиты, которые не перемещаются.


Настройки перед началом работы:

git config —global user.name «Ваше Имя» — указание имени для подписи коммитов.
git config —global user.email «email@domain.com» — указание email для описания коммитера.


Если вы работаете в Windows:

git config —global core.autocrlf true — включение преобразования окончаний строк из CRLF в LF.


Исключение неотслеживаемых файлов:

Файлы и директории, которые не должны быть включены в репозиторий, указываются в файле .gitignore. Обычно это зависимости (node_modules/, bower_components/), готовые сборки (build/, dist/) и другие временные файлы. Каждый элемент указывается с новой строки, допускается использование шаблонов.

Применяемые сокращения:

<file> — файл в проекте

<dir> — директория проекта

<branch> — название ветки

<tag> — метка

<remote> — удалённый репозиторий, например, на GitHub

<alias> — сокращение или псевдоним

Работа с репозиторием:

git init — Инициализация нового репозитория.
git add <file> — Добавление файла под версионный контроль.
git add . — Добавление всех файлов под версионный контроль.
git commit — Фиксация изменений в репозитории.
git commit -a -m «comment» — Коммит всех изменений с комментарием, минуя этап индексации.
git commit —amend — Изменение последнего коммита.
git clone <remote> — Клонирование удалённого репозитория.
git clone <remote> <dir> — Клонирование удалённого репозитория в указанный каталог.
git status — Проверка состояния файлов в репозитории.
git diff — Просмотр изменённых, но не проиндексированных файлов.
git diff —staged — Просмотр проиндексированных файлов, которые войдут в следующий коммит.
git rm <file> — Удаление файла с индексацией.
git rm —cached <file> — Удаление файла из индекса (файл остаётся в каталоге).
git mv <old file> <new file> — Перемещение и переименование файлов.
git log — Просмотр истории коммитов.
git reset HEAD <file> — Отмена индексации файла.
git checkout — <file> — Отмена изменений файла.


Работа с ветками:

git branch — Просмотр существующих веток.
git branch <branch> — Создание новой ветки.
git branch -d <branch> — Удаление ветки.
git branch -v — Просмотр последних коммитов на всех ветках.
git branch —merged — Ветки, которые уже слиты.
git branch —no-merged — Ветки, которые не были слиты.
git branch -D <branch> — Принудительное удаление ветки.
git branch —track <branch> <remote branch> — Создание локальной ветки из удалённой.
git checkout <branch> — Переключение на другую ветку.
git checkout -b <branch> — Создание и переход на новую ветку.
git merge <branch> — Слияние веток.
git mergetool — Запуск инструмента для разрешения конфликтов.
git push <remote> <branch> — Отправка ветки на удалённый сервер.
git push <remote> :<branch> — Удаление ветки на удалённом сервере.


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

git remote — Просмотр удалённых репозиториев.
git remote add <alias> <remote> — Добавление удалённого репозитория.
git remote show <remote> — Информация об удалённом репозитории.
git remote rename <old name> <new name> — Переименование удалённого репозитория.
git remote rm <remote> — Удаление удалённого репозитория.
git fetch <remote> — Получение данных из удалённого репозитория.
git pull <remote> <branch> — Получение данных и слияние с локальными изменениями.
git push <remote> <branch> — Отправка локальных изменений на удалённый сервер.


Конфигурирование:

git config —global user.name «Firstname Lastname» — Установка имени пользователя.
git config —global user.emailmail@example.com — Установка email пользователя.
git config —global core.editor emacs — Выбор текстового редактора.
git config —global merge.tool vimdiff — Настройка утилиты для слияния.
git config —global status.showUntrackedFiles all — Показ неотслеживаемых файлов.
git config alias.<alias> <command> — Создание псевдонимов для команд.
git config —list — Просмотр текущих настроек.
git help <command> — Получение справки по команде.


Файл .gitignore:

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

# — Комментарий.
/file.a — Игнорировать файл file.a в текущем каталоге.
*~ — Игнорировать все файлы, заканчивающиеся на тильду «~».
*.[ab] — Игнорировать файлы с расширениями .a или .b.
*.a — Игнорировать все файлы с расширением .a.
!file.a — Исключение: не игнорировать файл file.a.
/*.a — Игнорировать файлы с расширением .a в текущем каталоге.
dir/ — Игнорировать все файлы в каталоге dir.
/dir/ — Игнорировать каталог /dir и его содержимое.

Поделиться уроком

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *