Title: 🧬 Git β€” Advanced Techniques Group: Dev & Tools Icon: 🧬 Order: 2 ## Table of Contents - [Worktrees](#-worktrees--Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅-Π΄Π΅Ρ€Π΅Π²ΡŒΡ) - [Bisect](#-bisect--Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ-поиск) - [Reflog](#-reflog--ΠΆΡƒΡ€Π½Π°Π»-ссылок) - [Submodules](#-submodules--ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΠΈ) - [Cherry Pick & Rebase](#-cherry-pick--rebase) - [Stash](#-stash--ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅) - [Hooks](#-hooks--Ρ…ΡƒΠΊΠΈ) - [Advanced Techniques](#-advanced-techniques--ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅-Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ) --- # 🌳 Worktrees / Π Π°Π±ΠΎΡ‡ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ ### Create Worktree / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ worktree git worktree add ../feature feature-branch # Create worktree for branch / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ worktree для Π²Π΅Ρ‚ΠΊΠΈ git worktree add -b new-feature ../feature # Create new branch and worktree / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ worktree git worktree add --detach ../temp # Detached HEAD worktree / Worktree с отсоСдинённым HEAD ### List & Remove / Бписок ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ git worktree list # List all worktrees / Бписок всСх worktrees git worktree remove ../feature # Remove worktree / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ worktree git worktree prune # Clean up stale worktrees / ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ worktrees --- # πŸ” Bisect / Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск ### Basic Bisect / Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ bisect git bisect start # Start bisect / ΠΠ°Ρ‡Π°Ρ‚ΡŒ bisect git bisect bad # Mark current as bad / ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°ΠΊ ΠΏΠ»ΠΎΡ…ΠΎΠΉ git bisect good # Mark commit as good / ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΊΠ°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ git bisect reset # End bisect / Π—Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ bisect ### Automated Bisect / АвтоматичСский bisect git bisect start HEAD v1.0 # Start with range / ΠΠ°Ρ‡Π°Ρ‚ΡŒ с Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ git bisect run ./test.sh # Automate with script / ΠΠ²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ со скриптом git bisect skip # Skip current commit / ΠŸΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ --- # πŸ“œ Reflog / Π–ΡƒΡ€Π½Π°Π» ссылок ### View Reflog / ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ reflog git reflog # Show reflog / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ reflog git reflog show HEAD # Show HEAD reflog / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ reflog HEAD git reflog show main # Show branch reflog / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ reflog Π²Π΅Ρ‚ΠΊΠΈ ### Restore from Reflog / ВосстановлСниС ΠΈΠ· reflog git reset --hard HEAD@{1} # Restore to previous HEAD / Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ HEAD git reset --hard HEAD@{2.hours.ago} # Restore to 2 hours ago / Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊ 2 часам Π½Π°Π·Π°Π΄ git reflog expire --expire=now --all # Clear reflog / ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ reflog --- # πŸ“¦ Submodules / ΠŸΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ### Add Submodule / Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ git submodule add path/to/submodule # Add submodule / Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ git submodule add -b branch path # Add specific branch / Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ### Update Submodules / ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΠΈ git submodule update --init --recursive # Initialize submodules / Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΠΈ git submodule update --remote # Update to latest / ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎ послСдних git submodule foreach git pull origin main # Pull all submodules / ΠŸΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ всС ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ### Remove Submodule / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ git submodule deinit path/to/submodule # Deinitialize submodule / Π”Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ git rm path/to/submodule # Remove submodule / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ rm -rf .git/modules/path/to/submodule # Clean up git directory / ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ git Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ --- # πŸ’ Cherry Pick & Rebase ### Cherry Pick / Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² git cherry-pick # Apply commit / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ git cherry-pick # Apply multiple / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько git cherry-pick .. # Apply range / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ git cherry-pick --continue # Continue after conflict / ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ послС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° git cherry-pick --abort # Abort cherry-pick / ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ cherry-pick ### Interactive Rebase / Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ rebase git rebase -i HEAD~3 # Rebase last 3 commits / Rebase послСдних 3 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² git rebase -i main # Rebase onto main / Rebase Π½Π° main git rebase --continue # Continue after resolving / ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ послС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ git rebase --abort # Abort rebase / ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ rebase git rebase --skip # Skip current commit / ΠŸΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ### Rebase Options / ΠžΠΏΡ†ΠΈΠΈ rebase git rebase -i --autosquash HEAD~5 # Auto-squash fixup commits / АвтослияниС fixup ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² git rebase --onto main feature~3 feature # Advanced rebase / ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ rebase --- # πŸ’Ύ Stash / ΠžΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ ### Basic Stash / Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ stash git stash # Stash changes / ΠžΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ измСнСния git stash push -m "description" # Stash with message / ΠžΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ с сообщСниСм git stash -u # Include untracked files / Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ нСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹ git stash -a # Include all (ignored too) / Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ всС ### List & Apply / Бписок ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ git stash list # List stashes / Бписок stash git stash show # Show latest stash / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ послСдний stash git stash show -p stash@{1} # Show specific stash diff / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ diff ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ stash git stash apply # Apply latest stash / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдний stash git stash apply stash@{2} # Apply specific stash / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ stash git stash pop # Apply and remove stash / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ stash ### Manage Stashes / Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ stash git stash drop stash@{1} # Remove specific stash / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ stash git stash clear # Remove all stashes / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всС stash git stash branch new-branch stash@{0} # Create branch from stash / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ· stash --- # πŸͺ Hooks / Π₯ΡƒΠΊΠΈ ### Git Hooks Location / РасполоТСниС Ρ…ΡƒΠΊΠΎΠ² .git/hooks/ # Hooks directory / ДирСктория Ρ…ΡƒΠΊΠΎΠ² .git/hooks/pre-commit # Pre-commit hook / Π₯ΡƒΠΊ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ .git/hooks/pre-push # Pre-push hook / Π₯ΡƒΠΊ ΠΏΠ΅Ρ€Π΅Π΄ push .git/hooks/commit-msg # Commit message hook / Π₯ΡƒΠΊ сообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ### Sample Pre-Commit Hook / ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ…ΡƒΠΊΠ° pre-commit ```bash #!/bin/bash # Run tests before commit / Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ тСсты ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ npm test || exit 1 ``` ### Enable Hooks / Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ…ΡƒΠΊΠΈ chmod +x .git/hooks/pre-commit # Make executable / Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ исполняСмым git config core.hooksPath custom-hooks/ # Custom hooks path / ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΏΡƒΡ‚ΡŒ Ρ…ΡƒΠΊΠΎΠ² --- # πŸ”¬ Advanced Techniques / ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ### Filter-Branch / Π€ΠΈΠ»ΡŒΡ‚Ρ€-Π²Π΅Ρ‚ΠΊΠ° git filter-branch --tree-filter 'rm -f passwords.txt' HEAD # Remove file from history / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈΠ· истории git filter-branch --env-filter 'export GIT_AUTHOR_NAME=""' HEAD # Rewrite author / ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π° ### BFG Repo-Cleaner / BFG очистка рСпозитория bfg --delete-files passwords.txt # Remove file / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» bfg --strip-blobs-bigger-than 10M # Remove large files / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ большиС Ρ„Π°ΠΉΠ»Ρ‹ ### Find Large Files / Найти большиС Ρ„Π°ΠΉΠ»Ρ‹ git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | awk '/^blob/ {print substr($0,6)}' | sort -n -k 2 | tail -10 ### Blame & Log / ОбвинСниС ΠΈ Π»ΠΎΠ³ git blame file.txt # Show who changed each line / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΡ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку git blame -L 10,20 file.txt # Blame specific lines / ΠžΠ±Π²ΠΈΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ строки git log --follow file.txt # Follow file renames / Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° пСрСимСнованиями git log -p -S "function" # Search for code changes / Π˜ΡΠΊΠ°Ρ‚ΡŒ измСнСния ΠΊΠΎΠ΄Π° git log --graph --oneline --all # Visual graph / Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ ### Diff Advanced / ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ diff git diff HEAD~3..HEAD # Diff range / Diff Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° git diff --stat # Show statistics / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ статистику git diff --word-diff # Word-level diff / Diff Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ слов git diff main...feature # Three-dot diff / Π’Ρ€Ρ‘Ρ…Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΉ diff ### Archive / Архив git archive --format=zip --output=repo.zip HEAD # Create ZIP archive / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ZIP Π°Ρ€Ρ…ΠΈΠ² git archive --format=tar HEAD | gzip > repo.tar.gz # Create tar.gz / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ tar.gz ### Sparse Checkout / Частичная Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° git sparse-checkout init # Initialize sparse checkout / Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ sparse checkout git sparse-checkout set dir1 dir2 # Checkout specific directories / Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ### Maintenance / ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅ git gc # Garbage collection / Π‘Π±ΠΎΡ€ΠΊΠ° мусора git gc --aggressive # Aggressive GC / АгрСссивная сборка мусора git fsck # Check integrity / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ git prune # Prune unreachable objects / ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ нСдостиТимыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ --- # 🌟 Real-World Examples / ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ### Fix Commit Message / Π˜ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ```bash git commit --amend -m "New message" # Amend last commit message / Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднСС сообщСниС git rebase -i HEAD~3 # Reword older commit / ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ старый ΠΊΠΎΠΌΠΌΠΈΡ‚ ``` ### Undo Last Commit / ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ ```bash git reset --soft HEAD~1 # Keep changes staged / ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ измСнСния staged git reset --mixed HEAD~1 # Keep changes unstaged / ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ измСнСния unstaged git reset --hard HEAD~1 # Discard changes / ΠžΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ измСнСния ``` ### Squash Commits / Π‘Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ```bash git rebase -i HEAD~3 # Interactive rebase / Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ rebase # Change 'pick' to 'squash' for commits to squash / Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ 'pick' Π½Π° 'squash' ``` ### Split Commit / Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ ```bash git rebase -i HEAD~3 # Mark commit for 'edit' git reset HEAD~ git add file1.txt && git commit -m "Part 1" git add file2.txt && git commit -m "Part 2" git rebase --continue ``` ### Emergency Recovery / ЭкстрСнноС восстановлСниС ```bash git reflog # Find lost commit / Найти потСрянный ΠΊΠΎΠΌΠΌΠΈΡ‚ git reset --hard # Restore / Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ``` # πŸ’‘ Best Practices / Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ # Use worktrees for parallel work / Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ worktrees для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ # Bisect to find bugs quickly / Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ bisect для быстрого поиска Π±Π°Π³ΠΎΠ² # Reflog saves you from mistakes / Reflog спасаСт ΠΎΡ‚ ошибок # Interactive rebase for clean history / Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ rebase для чистой истории # Stash before switching branches / Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ stash ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Π΅Ρ‚ΠΎΠΊ # Never rebase published history / Никогда Π½Π΅ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ rebase ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ истории # πŸ”§ Useful Aliases / ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ алиасы git config --global alias.lg "log --graph --oneline --all" git config --global alias.st "status -sb" git config --global alias.co "checkout" git config --global alias.br "branch" git config --global alias.unstage "reset HEAD --"