Шпаргалка: Git і GitHub
Команда → що робить. Без довгих пояснень.
Старт і конфіг
git init
Робить поточну теку репозиторієм (.git).
git clone URL
Копіює remote-репозиторій з історією.
git clone URL назва
Клонує в теку з іншою назвою.
git config user.name "…"
Імʼя автора для комітів у цьому repo.
git config user.email "…"
Email автора для комітів у цьому repo.
Щоденна робота
git status
Що змінено, що в staging, що ще не відстежується.
git add file
Кладе файл у staging (список на коміт).
git add .
Додає всі зміни в поточній теці й нижче.
git add -p
Додає зміни шматками, з підтвердженням.
git commit -m "…"
Зберігає staging як новий коміт.
git commit -am "…"
Add відстежуваних файлів + commit одразу.
git commit --amend
Переписує останній коміт (лише до push).
git diff
Різниця у файлах, які ще не в staging.
git diff --staged
Різниця того, що вже піде в коміт.
git restore file
Скидає незакомічені зміни у файлі.
git restore --staged file
Прибирає файл зі staging, зміни лишає.
git rm file
Видаляє файл і ставить видалення в staging.
git rm --cached file
Припиняє відстеження, файл на диску лишає.
Гілки
git branch
Список локальних гілок; поточна з *.
git branch назва
Створює гілку, не перемикаючись.
git branch -d назва
Видаляє злиту гілку.
git branch -D назва
Видаляє гілку примусово.
git branch -m нова
Перейменовує поточну гілку.
git switch назва
Переходить на іншу гілку.
git switch -c назва
Створює гілку й одразу на неї переходить.
git switch -
Повертається на попередню гілку.
git checkout -b назва
Старий еквівалент switch -c.
Злиття й перенесення
git merge гілка
Вливає гілку в поточну.
git merge --abort
Скасовує незавершене злиття.
git rebase гілка
Перекладає ваші коміти поверх іншої гілки.
git rebase -i HEAD~n
Інтерактивно змінює / склеює останні n комітів.
git rebase --continue
Продовжує rebase після вирішення конфлікту.
git rebase --abort
Скасовує rebase цілком.
git cherry-pick hash
Копіює один коміт у поточну гілку.
git cherry-pick --continue
Продовжує cherry-pick після конфлікту.
git cherry-pick --abort
Скасовує cherry-pick.
Remote: fetch, pull, push
git remote -v
Показує URL усіх remote.
git remote add origin URL
Підключає remote під іменем origin.
git remote add upstream URL
Додає оригінал після fork.
git fetch origin
Завантажує коміти з remote без злиття.
git fetch --all
Fetch з усіх remote.
git pull
Fetch + merge у поточну гілку.
git pull --rebase
Fetch + rebase локальних комітів.
git push
Відправляє локальні коміти на remote.
git push -u origin гілка
Перший push гілки + привʼязка upstream.
git push origin :гілка
Видаляє гілку на remote.
git push --force-with-lease
Force після rebase, якщо remote не змінився.
Історія й скасування
git log
Список комітів від новіших до старіших.
git log --oneline --graph --all
Компактний граф усіх гілок.
git log -p file
Історія файлу з diff.
git show hash
Деталі одного коміту + diff.
git reflog
Журнал переміщень HEAD (навіть «втрачені» коміти).
git reset --soft HEAD~1
Прибирає коміт, зміни лишає в staging.
git reset HEAD~1
Прибирає коміт, зміни лишає у файлах.
git reset --hard HEAD~1
Прибирає коміт і всі його зміни.
git reset --hard HEAD@{n}
Повертає стан з reflog.
git revert hash
Новий коміт, що скасовує зміни hash.
git bisect start
Починає бінарний пошук поганого коміту.
git bisect good|bad
Позначає коміт під час bisect.
git bisect reset
Виходить з режиму bisect.
Stash
git stash
Ховає незакомічені зміни на поличку.
git stash list
Список схованого.
git stash pop
Повертає останнє й прибирає з полички.
git stash apply
Повертає сховане, лишає копію на поличці.
git stash apply stash@{n}
Повертає конкретний запис зі списку.
git stash drop
Видаляє останній запис зі stash.
Теги
git tag
Список тегів.
git tag v1.0
Легкий тег на поточному коміті.
git tag -a v1.0 -m "…"
Анотований тег з повідомленням.
git push origin v1.0
Відправляє тег на remote.
git push origin --tags
Відправляє всі локальні теги.
Підмодулі
git submodule add URL шлях
Підключає чужий repo як підмодуль.
git submodule status
Показує commit, на якому «сидить» підмодуль.
git submodule update --init
Ініціалізує й підтягує підмодулі після clone.
Ignore, hooks, GitHub
.gitignore
Патерни файлів, які Git ігнорує (*.log, .env, dist/).
pre-commit
Hook: скрипт перед комітом (лінтер тощо).
commit-msg
Hook: перевірка формату повідомлення коміту.
pre-push
Hook: перевірка перед push (тести).
Pull Request
Запит злити гілку через review на GitHub.
Squash and merge
Зливає PR в один коміт на цільовій гілці.
git fetch upstream && git merge upstream/main
Підтягує оновлення з оригіналу після fork.