Skip to content

Шпаргалка по командам Git

Git — это распределенная система управления версиями с открытым исходным кодом, которая позволяет эффективно и быстро управлять версиями проектов любого размера: от совсем небольших до очень крупных. Git был разработан Линусом Торвальдсом для управления разработкой ядра Linux.

Основы Git

git init <directory>

Создает пустой Git-репозиторий в указанном каталоге. Если запустить без параметров, текущий каталог будет инициализирован как Git-репозиторий.

git clone <repo>

Клонирует репозиторий, находящийся по адресу <repo>, на локальную машину. Исходный репозиторий может находиться в локальной файловой системе или на удаленном сервере по протоколу HTTP или SSH.

git config user.name <name>

Определяет имя автора, которое будет использоваться для всех коммитов в текущем репозитории.

git add <directory>

Добавляет изменения в <directory> для следующего коммита.

git commit -m "<message>"

Фиксирует изменения из индекса (staged snapshot), используя <message> в качестве сообщения коммита.

git status

Выводит список файлов, которые проиндексированы, не проиндексированы и не отслеживаются.

git log

Отображает всю историю коммитов в формате по умолчанию.

git diff

Сравнивает различия между рабочей директорией (те изменения, для которых еще не было выполнено git add) и индексом (после git add).

Отмена изменений

git revert <commit>

Создает новый коммит, который отменяет все изменения, внесенные в <commit>, и применяет его к текущей ветке.

git reset <file>

Удаляет <file> из индекса, но оставляет рабочую директорию без изменений. Это отменяет индексацию файла, не перезаписывая изменения.

git clean -n

Показывает, какие файлы будут удалены из рабочей директории. Используйте флаг -f вместо -n для фактической очистки.

Перезапись истории

git commit --amend

Изменяет последний коммит. Если в рабочей директории есть изменения, готовые к коммиту, они также будут включены в него при использовании команды git commit –amend.

git rebase <base>

Выполняет перебазирование (rebase) текущей ветки на <base>. В качестве <base> может выступать ID коммита, имя ветки, тег или HEAD.

git reflog

Позволяет просмотреть записи обо всех действиях во всех ветках (включая удаленные коммиты и операции сброса/reset).

Ветки Git

git branch

Выводит список всех веток. Добавьте параметр <branch>, чтобы создать новую ветку с именем <branch>.

git checkout -b <branch>

Создает и переключается на новую ветку с именем <branch>. Опустите -b, чтобы переключиться на существующую ветку.

git merge <branch>

Сливает ветку <branch> в текущую ветку.

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

git remote add <name> <url>

Добавляет новый удаленный репозиторий. После этого вы сможете использовать <name> как сокращение для <url> в других командах.

git fetch <remote> <branch>

Получает все обновления указанной ветки <branch> из репозитория, но не сливает их с локальной веткой.

git pull <remote>

Получает указанную удаленную копию текущей ветки и немедленно сливает ее с локальной копией.

git push <remote> <branch>

Отправляет ветку в <remote> вместе с необходимыми коммитами и объектами. Если ветка не существует в удаленном репозитории, она будет там создана.

git config

git config --global user.name <name>

Определяет имя автора для всех коммитов текущего пользователя.

git config --global user.email <email>

Определяет электронную почту автора для всех коммитов текущего пользователя.

git config --global alias.<alias-name> <git-command>

Создает сокращение (псевдоним) для команды Git.

git config --system core.editor <editor>

Устанавливает текстовый редактор, который будет использоваться командами для всех пользователей компьютера.

git config --global --edit

Открывает глобальный конфигурационный файл в текстовом редакторе для ручного редактирования.

git log

git log -<limit>

Отображает последние <limit> записей истории коммитов.

git log --oneline

Отображает историю коммитов, сжимая каждый коммит в одну строку.

git log -p

Отображает историю коммитов и полные различия (diff) для каждого коммита.

git log --stat

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

git log --author="<pattern>"

Ищет коммиты конкретного автора.

git log --grep="<pattern>"

Выполняет поиск по истории коммитов с использованием регулярных выражений.

git log <since>..<until>

Отображает коммиты, созданные в период между <since> и <until>.

git log -- <file>

Отображает записи из истории коммитов только для указанного файла.

git diff

git diff HEAD

Сравнивает различия между рабочей директорией (те изменения, для которых еще не было выполнено git add) и репозиторием (после git commit).

git diff --cached

Сравнивает различия между индексом (после git add) и репозиторием (после git commit).

git reset

git reset

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

git reset --hard

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

git reset <commit>

Перемещает указатель текущей ветки назад к <commit> и сбрасывает индекс, но не затрагивает рабочую директорию.

git reset --hard <commit>

Аналогично предыдущему, но сбрасывает и индекс, и рабочую директорию. Удаляет незафиксированные изменения и все коммиты, сделанные после <commit>.

git pull

git pull --rebase <remote>

Получает удаленную копию текущей ветки и выполняет ее перебазирование (rebase) на локальную копию. Использует git rebase вместо merge для интеграции веток.

git push

git push <remote> --force

Принудительная отправка (Force push).

git push <remote> --all

Отправляет все локальные ветки в указанный удаленный репозиторий.

git push <remote> --tags

Отправляет все локальные теги в удаленный репозиторий.