Главная Категории Контакты Поиск

git cheat sheet

Список самых распространенных команд git.

Git ·15.08.2019·читать 11 мин 🤓·Автор: Alex Myzgin

Инициализация и клонирование репозиториев

git init <directory> Создает пустой Git-репозиторий в указанной директории. Если запустить его без аргументов, то будет использоваться текущий каталог, как репозиторий git.

git clone <repo> Клонирует репозиторий по ссылке <repo> на локальный компьютер. Оригинальный репозиторий может находиться в локальной файловой системе или на удаленном компьютере через HTTP или SSH.

Настройка информации о пользователях, используемой во всех локальных репозиториях

git config --global user.name “firstname lastname” Определяет имя автора, которое используется во всех коммитах в текущем репозитории. Обычно используется флаг —global, чтобы установить параметры конфигурации для текущего пользователя.

git config --global user.email “valid-email” Определяет адрес электронной почты, который будет связан с каждым маркером истории.

git config --global color.ui auto Устанавливает автоматическую раскраску командной строки для Git, для удобства просмотра.

git add <directory> Помещает все изменения из указаной <directory> в промежуточную область для следующего коммита. Заменив <directory> на <file>, файл будет добавлен в промежуточную область.

git add . Помещает все твои изменения в текущей директории в промежуточную область.

git commit -m "<message>" Создает коммит сообщение для изменений в промежуточной области, но, вместо запуска текстового редактора использует <message> в качестве сообщения.

git commit -am "<message>" Помещает все изменения в текущей директории в промежуточную область и создаст коммит сообщение с <message> в качестве сообщения.

git status Показывает список измененных файлы в рабочем каталоге: добавлених в промежуточную область или нет.

git log Показывает всю историю коммитов, используя формат по умолчанию. Для настройки см. дополнительные параметры.

git diff Показывает изменения в рабочем каталоге которые еще не добавлены в промежуточную область.

git diff --staged Показывает изменения в рабочем каталоге которые были добавлены в промежуточную область но еще не закоммичены.

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

git revert <commit> Создает новое коммит сообщение, которое отменяет все изменения, сделанные в данном <commit> (хеш коммита), затем применяет его в текущей ветке. Более подробно здесь.

git reset <file> Убирает <file> из промежуточной области, но оставляет рабочий каталог без изменений.

git checkout <file> Отменяет изменения только для определенного файла или каталога, которые не были добавлены в промежуточную область.

Переписывание Git History

git commit --amend Изменяет последнее коммит сообщение и добавляет изменения из промежуточной области. Для того что бы просто изменить сообщение последнего коммита нужно что бы в промежуточной области не было изменений. Более подробно здесь.

git rebase <base> Переносит текущую ветку поверх <base>. <base> - может быть хешем коммита, именем ветки, тегом или относительной ссылкой на HEAD. Применяет любые коммиты текущей ветки поверх указанной.

git reflog Показывает журнал изменений в HEAD локального репозитория. Добавь флаг —relative-date, чтобы показать информацию о дате, или —all, чтобы показать все ссылки.

git reset --hard [commit] Очищает промежуточную область, переписывает рабочее дерево до определенного коммита.

Git Branches

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> из репозитория. Убираем <branch>, чтобы получить все удалённые ссылки.

git pull <remote> Стягивает указанную удалённую копию текущей ветки и немедленно объединит её с локальной копией.

git push <remote> <branch> Отправляет локальную ветку в удалённый репозиторий. Создает именованную ветку в репозитории, если такой не существует.

git merge <remote> <branch> Объединяет удалённую ветку с текущей веткой, для её обновления.

Временные коммиты

git stash Временно хранит все изменения в рабочей директории.

git stash list Выводит список сохраненных измененных файлов.

git stash pop Восстанавливает самое последнее сохранение файлов.

git stash drop Сбрасывает последние сохраненные изменение.

Более поздобнее про stash в этом посте

git config

git config --global user.name <name> Определяет имя автора, которое будет использоваться для всех коммитов текущим пользователем.

git config --global user.email <email> Определяет адрес электронной почты автора, который будет использоваться для всех коммитов текущим пользователем.

git config --global alias. <alias-name> <git-command> Создает псевдоним (alias) для команды Git. Например: alias.glog log --graph --oneline установит git glog, эквивалентный git log --graph --oneline.

git config --system core.editor <editor> Устанавливает текстовый редактор, используемый командами для всех пользователей на машине. <editor> аргумент должен быть командой, которая запускает нужный редактор (например, vi).

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

git log

git log -<limit> Ограничивает количество коммитов на <limit>. Например: git log -5 ограничит до 5 коммитов.

git log --oneline Конденсирует каждый коммит в одну строку.

git log -p Показывает полный diff последнего коммита.

git log --stat Указывает, какие файлы были изменены, и относительное количество строк, которые были добавлены и удалены из каждого из них.

git log --author=”<pattern>” Ищет коммити определенного автора.

git log --grep=”<pattern>” Ищет коммити с сообщением коммита, которое соответствует <pattern>.

git log <since>..<until> Показывает коммиты, которые происходят между <since> и <until>. Аргументы могут быть идентификатором, именем ветки, HEAD или любым другим видом ссылки.

git log -- <file> Отображает только те коммиты, которые имеют указанный файл.

git log --graph --decorate Флаг --graph рисует, основанный на тексте, график коммитов в левой части коммит-сообщений. --decorate добавляет имена веток или тегов, показанных коммитов.

git diff

git diff HEAD Показывает разницу между рабочим каталогом и последним коммитом.

git diff --cached Показывает разницу между изменениями в промежуточной области и последним коммитом.

git reset

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

git reset --hard Сбрасывает промежуточную область и рабочий каталог в соответствии с последним коммитом и перезаписывает все изменения в рабочем каталоге.

git reset <commit> Перемещает верхушку текущий ветки назад к <commit>; сбрасывает промежуточную область, чтобы соответствовать коммиту, но оставляет рабочий каталог.

git reset --hard <commit> Делает то же, что и предыдущий, но сбрасывает как промежуточную область, так и рабочий каталог для соответствия. Удаляет не зафиксированные изменения и все коммиты после <commit>.

git rebase

git rebase -i <base> Интерактивное перебазирование текущей ветки на новую базу (хеш коммита). Запускает редактор для ввода команд о том, каким образом каждый коммит будет перенесен на новую базу.

git pull

git pull --rebase <remote> Стягивает удаленную копию текущей ветки и перемещает её в локальную копию. Использует git rebase вместо merge для интеграции веток.

git push

git push <remote> --force Принудительная отправка изменений git, даже если они приводят к конфликтному слиянию (non-fast-forward). Не используй флаг --force, если не уверен, что знаешь, что делаешь.

git push <remote> --all Отправка всех локальных веток на указанный <remote>.

git push <remote> --tags Теги не отправляются автоматически, когда ты отправляешь ветку или используешь флаг --all. Флаг --tags отправляет все локальные теги в удаленный репозиторий.

Website, name & logo
Copyright © 2019. Alex Myzgin