Git-команды, которые нужны каждый день
Git знают все, кто работает с кодом. Но за пределами базового add → commit → push многие начинают гуглить. Ничего плохого в этом нет — я сам периодически уточняю синтаксис для редких операций. Собрал команды, к которым возвращаюсь чаще всего.
Новый репозиторий с нуля
git init
git add .
git commit -m 'initial commit'
git remote add origin https://github.com/user_name/repo.git
git push -u origin master
Флаг -u при первом push связывает локальную ветку с удалённой — последующие git push без аргументов будут работать автоматически.
Базовые команды
git clone repository_url # клонировать репозиторий
git status # текущее состояние рабочей директории
git add . # добавить все изменения в индекс
git commit -m 'описание' # зафиксировать изменения
git commit -a -m 'описание' # зафиксировать все изменённые файлы без git add
git push origin main # push в удалённый репозиторий
git push # push повторно (если ветка уже связана)
Ветки
git branch -a # показать все ветки (локальные и удалённые)
git branch newbranch # создать ветку
git checkout newbranch # переключиться на ветку
git push origin newbranch # отправить ветку на remote
git branch -d newbranch # удалить ветку локально
git push origin --delete newbranch # удалить ветку на remote
Откат последнего коммита
git reset HEAD~ # отменить коммит, изменения остаются
git reset --hard HEAD~ # отменить коммит, изменения удаляются
HEAD~ — это "один коммит до текущего". git reset перемещает указатель HEAD к указанному состоянию. Разница между вариантами: без --hard файлы останутся изменёнными в рабочей директории, с --hard — вернутся к состоянию предыдущего коммита.
Push в несколько репозиториев одновременно
Удобно, когда нужно держать зеркало на GitHub и Bitbucket:
git remote add "all" [email protected]:username/my-repo.git
git remote set-url --add --push "all" [email protected]:username/my-repo.git
git remote set-url --add --push "all" [email protected]:username/my-repo.git
git push all
Применить .gitignore к уже существующему репозиторию
Добавил .gitignore после того, как часть файлов уже попала в индекс — Git их всё равно отслеживает. Чтобы это исправить:
git rm -r --cached .
git add .
git commit -m 'Removed all files that are in the .gitignore'
git push origin master
git rm --cached убирает файлы из индекса, не трогая их на диске. После git add . Git переиндексирует всё заново — уже с учётом .gitignore.
Если нужна помощь с настройкой Git-процессов в команде или CI/CD-пайплайнов — пиши на [email protected] или заходи на 1it.pro.