Skip to main content

Основные команды Git

Команды Git

Первоначальная настройка

Скрипт настройки: vanessa-bootstrap/tools/git-global-init.cmd

# Пользователь
git config --global user.name "Иванов Иван"
git config --global user.email "ivanov@example.com"

# Ветка по умолчанию
git config --global init.defaultBranch main

# Кириллица в путях
git config --global core.quotePath false

# Окончания строк (Windows)
git config --global core.autocrlf true
git config --global core.safecrlf false

# Окончания строк (Linux/MacOS)
# git config --global core.autocrlf input
# git config --global core.safecrlf true

# Буфер для больших репозиториев
git config --global http.postBuffer 1048576000

# Псевдонимы (сокращения команд)
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage "reset HEAD --"
git config --global alias.last "log -1 HEAD"

# Проверка настроек
git config --list

Для администратора (длинные пути Windows):

git config --system core.longpaths true

Настройка редактора и работа с Git в IDE описаны в разделе IDE.


Базовые операции

КомандаОписание
git initИнициализация репозитория
git clone <url>Клонирование репозитория
git statusПросмотр статуса
git status -sКраткий статус
git add .Добавить все изменения
git add <файл>Добавить конкретный файл
git commit -m "сообщение"Создать коммит
git commit -am "сообщение"Добавить и зафиксировать
git pushОтправить изменения
git pullПолучить изменения
git fetchПолучить без слияния

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

КомандаОписание
git branchСписок локальных веток
git branch -aВсе ветки (включая удаленные)
git branch <ветка>Создать ветку
git checkout <ветка>Переключиться на ветку
git checkout -b <ветка>Создать и переключиться
git merge <ветка>Слить ветку в текущую
git merge --no-ff <ветка>Слияние без fast-forward
git branch -d <ветка>Удалить ветку
git branch -D <ветка>Принудительно удалить
git push origin --delete <ветка>Удалить удаленную ветку

Просмотр истории

# История коммитов
git log
git log --oneline
git log --graph --oneline --all

# История файла
git log <файл>
git log --follow -- <файл>

# Поиск в истории
git log --grep="текст"
git log --author="Иванов"
git log --since="2 weeks ago"

# Просмотр коммита
git show <коммит>

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

В рабочей директории

git checkout -- <файл>       # Отменить изменения в файле
git checkout -- . # Отменить все изменения
git restore <файл> # То же самое (новая команда)

В индексе (staged)

git reset HEAD <файл>        # Убрать из индекса
git restore --staged <файл> # То же самое (новая команда)

Откат коммитов

КомандаОписание
git reset --soft HEAD~1Откатить коммит, сохранить изменения в индексе
git reset --mixed HEAD~1Откатить коммит, сохранить изменения в рабочей директории
git reset --hard HEAD~1Откатить коммит, удалить все изменения
git commit --amend -m "новое сообщение"Изменить последний коммит

Stash (временное сохранение)

git stash                       # Сохранить изменения
git stash save "описание" # Сохранить с описанием
git stash -u # Включая неотслеживаемые файлы
git stash list # Список сохранений
git stash show # Показать содержимое
git stash apply # Применить последнее
git stash apply stash@{0} # Применить конкретное
git stash pop # Применить и удалить
git stash drop stash@{0} # Удалить конкретное
git stash clear # Удалить все

Теги

# Создание тегов
git tag v1.0.0 # Легковесный тег
git tag -a v1.0.0 -m "Релиз 1.0.0" # Аннотированный тег
git tag -a v1.0.0 <коммит> # Тег на коммите

# Просмотр
git tag # Список тегов
git tag -l "v1.*" # С фильтром
git show v1.0.0 # Информация о теге

# Отправка
git push origin v1.0.0 # Отправить тег
git push origin --tags # Отправить все теги

# Удаление
git tag -d v1.0.0 # Удалить локально
git push origin --delete v1.0.0 # Удалить удаленно

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

# Просмотр
git remote -v

# Добавление
git remote add origin <url>

# Изменение URL
git remote set-url origin <новый_url>

# Удаление
git remote remove origin

Сравнение (diff)

git diff                    # Изменения в рабочей директории
git diff --staged # Изменения в индексе
git diff <коммит1> <коммит2> # Между коммитами
git diff --stat # Статистика изменений
git diff --name-only # Только имена файлов

Очистка

git clean -n    # Показать файлы для удаления
git clean -f # Удалить неотслеживаемые файлы
git clean -fd # Удалить файлы и папки
git clean -fX # Удалить игнорируемые файлы

Псевдонимы (сокращения)

После первоначальной настройки доступны:

ПсевдонимКоманда
git stgit status
git cogit checkout
git brgit branch
git cigit commit
git unstage <файл>git reset HEAD -- <файл>
git lastgit log -1 HEAD

Типичный рабочий процесс

# 1. Получить последние изменения
git pull

# 2. Создать ветку для задачи
git checkout -b feature/новая-функция

# 3. Внести изменения и зафиксировать
git add .
git commit -m "feat: Добавлена новая функция"

# 4. Отправить ветку
git push -u origin feature/новая-функция

# 5. После проверки кода и merge
git checkout main
git pull
git branch -d feature/новая-функция