Перейти до змісту

Git Cheatsheet


Базові команди

# ─── Стан ─────────────────────────────────────────────────────────────
git status                      # детально
git status --short              # коротко (M=modified, A=added, ?=untracked)
git diff                        # unstaged зміни
git diff --staged               # staged зміни (що піде в commit)
git diff --stat                 # короткий summary змін

# ─── Логи ─────────────────────────────────────────────────────────────
git log --oneline --decorate -20    # останні 20 коротко
git log --oneline --graph --all     # всі гілки у вигляді графу
git show HEAD                       # останній commit деталі

# ─── Гілки ────────────────────────────────────────────────────────────
git branch                      # список гілок
git branch -a                   # всі гілки (включно з remote)
git checkout -b feature/my-fix  # нова гілка + перейти
git switch main                 # перейти на main (Git 2.23+)

# ─── Staging і commit ─────────────────────────────────────────────────
git add notes_app/models.py     # додати конкретний файл
git add -p                      # інтерактивний staging (по частинах)
git commit -m "feat: add ChatMessage model"
git commit --amend              # змінити останній commit (тільки локально!)

# ─── Remote ───────────────────────────────────────────────────────────
git remote -v                   # remote URL
git fetch origin                # оновити info про remote
git pull origin main            # fetch + merge
git push origin feature/my-fix  # відправити гілку

# ─── Stash ────────────────────────────────────────────────────────────
git stash                       # тимчасово зберегти зміни
git stash list                  # список stash записів
git stash pop                   # відновити останній stash
git stash drop stash@{0}        # видалити stash

# ─── Скасування ───────────────────────────────────────────────────────
git checkout -- file.py         # скасувати unstaged зміни у файлі
git restore --staged file.py    # unstage файл
git reset HEAD~1                # скасувати останній commit (зміни залишаються)
git revert HEAD                 # скасувати commit новим commit (безпечно)

Корисні сценарії

# Подивитися що змінилось у конкретному commit:
git show abc1234

# Знайти в якому commit з'явився рядок:
git log -S "socket_timeout" --oneline

# Переглянути хто і коли змінив кожен рядок файлу:
git blame notes_project/settings.py

# Порівняти дві гілки:
git diff main..feature/my-fix

# Скинути файл до стану у HEAD:
git checkout HEAD -- notes_app/consumers.py

# Cherry-pick — взяти конкретний commit з іншої гілки:
git cherry-pick abc1234

Commit message convention

feat: add GroupChatConsumer WebSocket support
fix: resolve TimeoutError in RedisChannelLayer
docs: add deployment checklist
refactor: move ORM queries to selectors.py
test: add WebsocketCommunicator tests for consumers
chore: update requirements.txt dependencies

# Структура:
# <type>: <short description>
# (пустий рядок)
# Опціональне довше пояснення
#
# Types: feat, fix, docs, refactor, test, chore, style, perf

.gitignore для Django проєкту

# Python
__pycache__/
*.py[cod]
*.egg-info/
dist/
build/
.venv/
venv/

# Django
*.sqlite3
/staticfiles/
/media/
local_settings.py

# Environment — НІКОЛИ не комітити!
.env
*.env

# Docker
docker-compose.override.yml

# IDE
.vscode/
.idea/
*.swp