Основные команды Git: шпаргалка для ежедневной работы
Практика4 минРедакция Innovialabs
Коротко
Для ежедневной работы достаточно около двух десятков команд Git: clone, status, add, commit, switch, merge, pull, push, log и diff, плюс правильно настроенный .gitignore.
Короткий ответ
Большая часть работы с Git укладывается в цикл: получить изменения → создать ветку → изменить файлы → add → commit → push. Ниже команды сгруппированы по задачам, чтобы быстро найти нужную.
Начать работу
| Команда | Что делает |
|---|---|
git init | создаёт новый репозиторий в текущей папке |
git clone <url> | скачивает существующий репозиторий со всей историей |
git config --global user.name "Имя" | задаёт имя автора коммитов |
git config --global user.email "mail" | задаёт почту автора |
git clone https://github.com/user/project.git
cd project
Сохранить изменения
| Команда | Что делает |
|---|---|
git status | показывает изменённые, подготовленные и новые файлы |
git add <файл> | добавляет файл в staging area |
git add -p | позволяет выбрать отдельные фрагменты изменений |
git commit -m "сообщение" | фиксирует подготовленные изменения |
git commit --amend | исправляет последний коммит (только если он ещё не отправлен) |
git restore <файл> | отменяет несохранённые изменения в файле |
git restore --staged <файл> | убирает файл из staging area, не трогая правки |
git status
git add src/cart.js
git commit -m "Fix discount calculation in cart"
Совет: git add -p — лучший способ делать аккуратные коммиты, когда в одном файле смешаны разные правки.
Работать с ветками
| Команда | Что делает |
|---|---|
git branch | список локальных веток |
git switch -c <ветка> | создаёт ветку и переключается на неё |
git switch <ветка> | переключается на существующую ветку |
git merge <ветка> | вливает указанную ветку в текущую |
git branch -d <ветка> | удаляет ветку, которая уже влита |
git stash / git stash pop | временно прячет незакоммиченные правки и возвращает их |
git switch -c feature/login-form
# ...работа...
git switch main
git merge feature/login-form
Команды switch и restore — более новые и понятные замены перегруженной git checkout, которая до сих пор работает.
Синхронизироваться с сервером
| Команда | Что делает |
|---|---|
git remote -v | показывает подключённые удалённые репозитории |
git fetch | скачивает изменения, не трогая ваши ветки |
git pull | скачивает и вливает изменения в текущую ветку |
git push | отправляет ваши коммиты на сервер |
git push -u origin <ветка> | первая отправка новой ветки с привязкой к удалённой |
git pull
git push -u origin feature/login-form
Если сомневаетесь, что придёт с сервера, сначала сделайте git fetch, а затем посмотрите разницу.
Посмотреть историю и изменения
| Команда | Что делает |
|---|---|
git log --oneline --graph | компактная история с ветками |
git diff | изменения, ещё не добавленные в staging |
git diff --staged | изменения, которые войдут в коммит |
git show <хеш> | содержимое конкретного коммита |
git blame <файл> | кто и в каком коммите менял каждую строку |
git log --oneline --graph --all
git diff --staged
Основы .gitignore
Файл .gitignore в корне проекта перечисляет то, что Git не должен отслеживать: зависимости, сборки, логи и секреты.
# зависимости и сборка
node_modules/
dist/
# переменные окружения и секреты
.env
.env.local
# системные и редакторские файлы
.DS_Store
.idea/
*.log
Важные моменты:
.gitignoreне действует на файлы, которые уже отслеживаются. Чтобы перестать отслеживать файл, выполнитеgit rm --cached <файл>и закоммитьте изменение.- Если секрет уже попал в историю, одного
.gitignoreмало: ключ нужно отозвать и заменить. - Готовые шаблоны для разных языков есть в официальном репозитории
github/gitignore.
Частые ошибки
git add .безgit status. Легко закоммитить лишнее — сначала посмотрите, что изменилось.--amendпосле push. Это переписывает историю, которую уже видят другие.- Долгая работа без
pull. Чем дольше ветка живёт отдельно, тем больше конфликтов при слиянии.