ЁЯРЩ Git рдФрд░ GitHub CLI

Multilingual DevOps cheat sheet: Linux, Docker, Git, Kubernetes, Helm, Terraform, practical scenarios & templates.
рдкреНрд░рдХрд╛рд╢рд┐рдд

31 рдЕрдЧрд╕реНрдд 2025

рд╡рд░реНрд╢рди рдХрдВрдЯреНрд░реЛрд▓, рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ, рд░рд┐рдореЛрдЯ рд░рд┐рдкреЛрдЬрд╝, рд╕реНрдЯреИрд╢, рдЯреИрдЧреНрд╕ рдФрд░ GitHub CLI рдХреЗ рд▓рд┐рдП рдмреЗрд╕рд┐рдХ рдФрд░ рдПрдбрд╡рд╛рдВрд╕ Git рдХрдорд╛рдВрдбреНрд╕ред

ЁЯФ╣ рдмреБрдирд┐рдпрд╛рджреА рдХрдорд╛рдВрдбреНрд╕

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

git add рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдПрд░рд┐рдпрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
git add file.txt

рдЕрдЧрд▓реЗ рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ рд╕реНрдЯреЗрдЬ рдХрд░реЗрдВ

git add .

рд╡рд░реНрддрдорд╛рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдФрд░ рдиреАрдЪреЗ рдХреА рд╕рднреА рдЪреЗрдВрдЬреЗрд╕ рдХреЛ рд╕реНрдЯреЗрдЬ рдХрд░реЗрдВ

git add -p

рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХрд┐рди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╕реНрдЯреЗрдЬ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡рд▓реА рдЪреБрдиреЗрдВ (рдкрд╛рд░реНрд╢рд┐рдпрд▓ рдХрдорд┐рдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА)

git clone рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХреЛ рдПрдХ рдирдИ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдХреНрд▓реЛрди рдХрд░реЗрдВ
git clone -b branch_name URL

рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмреНрд░рд╛рдВрдЪ рдХреЛ рдХреНрд▓реЛрди рдХрд░реЗрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рдмрдЬрд╛рдп)

git clone --depth 1 URL

рдХреЗрд╡рд▓ рдирд╡реАрдирддрдо рдХрдорд┐рдЯ рдХреНрд▓реЛрди рдХрд░реЗрдВ, рдЬрд┐рд╕рд╕реЗ рд╕рдордп рдФрд░ рд╕реНрдкреЗрд╕ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реИрд▓реЛ рдХреЙрдкреА рдмрдиреЗ

git commit рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ
git commit -m "Initial commit"

рдПрдбрд┐рдЯрд░ рдЦреЛрд▓реЗ рдмрд┐рдирд╛ рдореИрд╕реЗрдЬ рдХреЗ рд╕рд╛рде рдХрдорд┐рдЯ рдХрд░реЗрдВ

git commit -a -m "Fix bugs"

рд╕рднреА рдореЙрдбрд┐рдлрд╝рд╛рдЗрдб рдЯреНрд░реИрдХреНрдб рдлрд╛рдЗрд▓реНрд╕ рдХреЛ рд╕реНрдЯреЗрдЬ рдФрд░ рдореИрд╕реЗрдЬ рдХреЗ рд╕рд╛рде рдХрдорд┐рдЯ рдХрд░реЗрдВ

git commit --amend

рдкрд┐рдЫрд▓реЗ рдХрдорд┐рдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ (рдореИрд╕реЗрдЬ рдмрджрд▓реЗрдВ рдпрд╛ рдФрд░ рдЪреЗрдВрдЬреЗрд╕ рдЬреЛрдбрд╝реЗрдВ)

git commit --fixup abc1234

рдлрд╝рд┐рдХреНрд╕рдЕрдк рдХрдорд┐рдЯ рдмрдирд╛рдПрдБ рддрд╛рдХрд┐ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд░рд┐рдмреЗрд╕ рдХреЗ рджреМрд░рд╛рди рдСрдЯреЛрдореИрдЯрд┐рдХрд▓реА squash рд╣реЛ рдЬрд╛рдП

git config рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдпрд╛ рдЧреНрд▓реЛрдмрд▓ рдСрдкреНрд╢рдиреНрд╕ рд╕реЗрдЯ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
git config --global user.name "Name"

рдЧреНрд▓реЛрдмрд▓ Git рдпреВрдЬрд╝рд░рдиреЗрдо рд╕реЗрдЯ рдХрд░реЗрдВ

git config --global user.email "email@example.com"

рдЧреНрд▓реЛрдмрд▓ Git рдИрдореЗрд▓ рд╕реЗрдЯ рдХрд░реЗрдВ

git config --list

рд╕рднреА Git рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдирд╛рдо, рдИрдореЗрд▓, рдПрдбрд┐рдЯрд░, рдЖрджрд┐) рдХреА рд╕реВрдЪреА рджрд┐рдЦрд╛рдПрдБ

git diff рдХрдорд┐рдЯреНрд╕ рдХреЗ рдмреАрдЪ, рдХрдорд┐рдЯ рдФрд░ рд╡рд░реНрдХрд┐рдВрдЧ рдЯреНрд░реА рдХреЗ рдмреАрдЪ рдмрджрд▓рд╛рд╡ рджрд┐рдЦрд╛рдПрдБ
git diff HEAD

рдкрд┐рдЫрд▓реЗ рдХрдорд┐рдЯ рдХреЗ рдмрд╛рдж рдЖрдкрдиреЗ рдХреНрдпрд╛ рдмрджрд▓рд╛ рд╣реИ (unstaged changes)

git diff --staged

рдЕрдЧрд▓реЗ рдХрдорд┐рдЯ рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛, рдпрд╣ рджрд┐рдЦрд╛рдПрдБ

git diff --word-diff HEAD~1

рд╡рд░реНрдб-рд▓реЗрд╡рд▓ рдбрд┐рдлрд░реЗрдВрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдмрджрд▓рд╛рд╡ рджрд┐рдЦрд╛рдПрдБ

git grep рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдВрджрд░ рд╕рд░реНрдЪ рдХрд░реЗрдВ
git grep "functionName"

functionName рдХреЗ рд╕рднреА рдЙрд▓реНрд▓реЗрдЦ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЦреЛрдЬреЗрдВ

git grep -n "TODO"

TODO рд╡рд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ рдЦреЛрдЬреЗрдВ рдФрд░ рд▓рд╛рдЗрди рдирдВрдмрд░ рджрд┐рдЦрд╛рдПрдБ

git grep -i "login"

login рд╢рдмреНрдж рдХреЛ рдХреЗрд╕-рдЗрдиреНрд╕реЗрдВрд╕рд┐рдЯрд┐рд╡ рддрд░реАрдХреЗ рд╕реЗ рдЦреЛрдЬреЗрдВ

git init рдЦрд╛рд▓реА Git рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдмрдирд╛рдПрдБ рдпрд╛ рдореМрдЬреВрджрд╛ рдХреЛ рд░реАрдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ
git init my-project

my-project рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдирдпрд╛ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдмрдирд╛рдПрдБ

git init --bare

рдПрдХ bare рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

git log рдХрдорд┐рдЯ рд▓реЙрдЧреНрд╕ рджрд┐рдЦрд╛рдПрдБ
git log --oneline

рдХрдорд┐рдЯ рд╣рд┐рд╕реНрдЯреНрд░реА рдХреЛ рдХреЙрдореНрдкреИрдХреНрдЯ рд╡рди-рд▓рд╛рдЗрди рдлрд╝реЙрд░реНрдореЗрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдПрдБ

git log --graph --all

рд╕рднреА рдмреНрд░рд╛рдВрдЪреЗрд╕ рдХреЛ рдХрдорд┐рдЯ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдПрдБ

git log -p --stat

рдХрдорд┐рдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдкреИрдЪ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЪреЗрдВрдЬ рд╕реНрдЯреИрдЯреНрд╕ рджрд┐рдЦрд╛рдПрдБ

git reset рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ unstaged рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдмрджрд▓рд╛рд╡ рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд░рдЦреЗрдВ
git reset HEAD file.txt

рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╣рдЯрд╛рдПрдБ (рдПрдбрд┐рдЯреНрд╕ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣реЗрдВрдЧреА)

git reset --hard HEAD~1

рдПрдХ рдХрдорд┐рдЯ рдкреАрдЫреЗ рдЬрд╛рдПрдБ рдФрд░ рд╕рднреА рдмрджрд▓рд╛рд╡ рд╣рдЯрд╛ рджреЗрдВ (рдЕрдкреНрд░рддрд┐рд╡рд░реНрддреА!)

git reset --soft HEAD~1

рдЕрдВрддрд┐рдо рдХрдорд┐рдЯ рдХреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдмрджрд▓рд╛рд╡ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП рд░рдЦреЗрдВ

git reset --mixed HEAD~1

рдПрдХ рдХрдорд┐рдЯ рдХреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдмрджрд▓рд╛рд╡ unstaged рд░реВрдк рдореЗрдВ рд░рдЦреЗрдВ

git show рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рджрд┐рдЦрд╛рдПрдБ
git show <commit_hash>

рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрдорд┐рдЯ рдХреЗ рдмрджрд▓рд╛рд╡ рдФрд░ рдореИрд╕реЗрдЬ рджрд┐рдЦрд╛рдПрдБ

git show HEAD~1

рд╡рд░реНрддрдорд╛рди рдХрдорд┐рдЯ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ рдХрдорд┐рдЯ рджрд┐рдЦрд╛рдПрдБ

git show --stat

рдирд╡реАрдирддрдо рдХрдорд┐рдЯ рдХреЗ рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рджрд┐рдЦрд╛рдПрдБ

git status рд╡рд░реНрдХрд┐рдВрдЧ рдЯреНрд░реА рдХреА рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рдПрдБ
git status -s

рд╢реЙрд░реНрдЯ рдлрд╝реЙрд░реНрдореЗрдЯ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рдПрдБ

git status -b

рд╡рд░реНрддрдорд╛рди рдмреНрд░рд╛рдВрдЪ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рдПрдБ

ЁЯМ┐ рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдФрд░ рдорд░реНрдЬрд┐рдВрдЧ

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

git branch рдмреНрд░рд╛рдВрдЪ рдмрдирд╛рдПрдБ, рд╕реВрдЪреА рджрд┐рдЦрд╛рдПрдБ рдпрд╛ рд╣рдЯрд╛рдПрдБ
git branch new-feature

new-feature рдирд╛рдо рдХреА рдирдИ рдмреНрд░рд╛рдВрдЪ рдмрдирд╛рдПрдБ

git branch -d old-feature

old-feature рдирд╛рдо рдХреА рд▓реЛрдХрд▓ рдмреНрд░рд╛рдВрдЪ рд╣рдЯрд╛рдПрдБ

git checkout рдмреНрд░рд╛рдВрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдорд┐рдЯ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
git checkout main

main рдмреНрд░рд╛рдВрдЪ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ

git checkout -b new-branch

рдирдИ рдмреНрд░рд╛рдВрдЪ рдмрдирд╛рдПрдБ рдФрд░ рдЙрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ

git switch рдмреНрд░рд╛рдВрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ (checkout рдХрд╛ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк)
git switch main

main рдмреНрд░рд╛рдВрдЪ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ

git switch -c feature-x

feature-x рдирд╛рдо рдХреА рдирдИ рдмреНрд░рд╛рдВрдЪ рдмрдирд╛рдПрдБ рдФрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ

git switch new-feature

new-feature рдирд╛рдо рдХреА рдореМрдЬреВрджрд╛ рдмреНрд░рд╛рдВрдЪ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ

git merge рдХрд┐рд╕реА рдЕрдиреНрдп рдмреНрд░рд╛рдВрдЪ рдХреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдорд┐рд▓рд╛рдПрдБ
git merge new-feature

new-feature рдмреНрд░рд╛рдВрдЪ рдХреЛ рд╡рд░реНрддрдорд╛рди рдмреНрд░рд╛рдВрдЪ рдореЗрдВ рдорд░реНрдЬ рдХрд░реЗрдВ

git merge --no-ff new-feature

рд╣рдореЗрд╢рд╛ рдорд░реНрдЬ рдХрдорд┐рдЯ рдмрдирд╛рдПрдБ (рднрд▓реЗ рд╣реА рдлрд╛рд╕реНрдЯ-рдлреЙрд░рд╡рд░реНрдб рд╕рдВрднрд╡ рд╣реЛ)

git merge --abort

рдХреЙрдирдлрд╝реНрд▓рд┐рдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдорд░реНрдЬ рдХреЛ рд░рджреНрдж рдХрд░реЗрдВ рдФрд░ рдмрджрд▓рд╛рд╡ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ

git rebase рдХрдорд┐рдЯреНрд╕ рдХреЛ рдирдИ рдмреЗрд╕ рдХрдорд┐рдЯ рдкрд░ рд▓реЗ рдЬрд╛рдПрдБ рдпрд╛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
git rebase main

рдЕрдкрдиреА рдмреНрд░рд╛рдВрдЪ рдХрдорд┐рдЯреНрд╕ рдХреЛ main рдмреНрд░рд╛рдВрдЪ рдкрд░ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ

git rebase -i HEAD~3

рдЕрдВрддрд┐рдо 3 рдХрдорд┐рдЯреНрд╕ рдХреЛ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡рд▓реА рдПрдбрд┐рдЯ рдХрд░реЗрдВ

git rebase --abort

рдЪрд▓ рд░рд╣реЗ рд░рд┐рдмреЗрд╕ рдХреЛ рд░реЛрдХреЗрдВ рдФрд░ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ

git rebase -i --autosquash HEAD~5

рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд░рд┐рдмреЗрд╕ рдХреЗ рджреМрд░рд╛рди fixup/squash рдХрдорд┐рдЯреНрд╕ рдХреЛ рдСрдЯреЛрдореИрдЯрд┐рдХрд▓реА squash рдХрд░реЗрдВ

git cherry-pick рдЕрдиреНрдп рдмреНрд░рд╛рдВрдЪ рд╕реЗ рд╡рд┐рд╢реЗрд╖ рдХрдорд┐рдЯреНрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
git cherry-pick <hash>

рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрдорд┐рдЯ (рд╣реИрд╢ рджреНрд╡рд╛рд░рд╛) рд╡рд░реНрддрдорд╛рди рдмреНрд░рд╛рдВрдЪ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ

git cherry-pick --continue

рдХреЙрдирдлрд╝реНрд▓рд┐рдХреНрдЯ рд╕реБрд▓рдЭрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЪреЗрд░реА-рдкрд┐рдХ рдЬрд╛рд░реА рд░рдЦреЗрдВ

git cherry-pick A^..B

A (excluding) рд╕реЗ B (including) рддрдХ рдХрдорд┐рдЯреНрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ

ЁЯУб рд░рд┐рдореЛрдЯ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реАрдЬрд╝

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

git remote рд░рд┐рдореЛрдЯ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реАрдЬрд╝ (рдЬреИрд╕реЗ GitHub) рд╕реЗ рд▓рд┐рдВрдХ рдореИрдиреЗрдЬ рдХрд░реЗрдВ
git remote -v

рд░рд┐рдореЛрдЯ рдирд╛рдо рдФрд░ рдЙрдирдХреЗ URLs рджрд┐рдЦрд╛рдПрдБ

git remote add origin URL

рдПрдХ рд░рд┐рдореЛрдЯ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА origin рдЬреЛрдбрд╝реЗрдВ

git pull рд░рд┐рдореЛрдЯ рдмреНрд░рд╛рдВрдЪ рд╕реЗ рдмрджрд▓рд╛рд╡ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдСрдЯреЛрдореИрдЯрд┐рдХрд▓реА рдорд░реНрдЬ рдХрд░реЗрдВ
git pull origin main

рд░рд┐рдореЛрдЯ main рдмреНрд░рд╛рдВрдЪ рд╕реЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдлрд╝реЗрдЪ рдФрд░ рдорд░реНрдЬ рдХрд░реЗрдВ

git pull --rebase origin main

рдлрд╝реЗрдЪ рдХрд░реЗрдВ рдФрд░ рдорд░реНрдЬ рдХреА рдмрдЬрд╛рдп рд░рд┐рдмреЗрд╕ рдХрд░реЗрдВ

git push рдЕрдкрдиреЗ рд▓реЛрдХрд▓ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рд░рд┐рдореЛрдЯ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ
git push origin main

рд▓реЛрдХрд▓ main рдмреНрд░рд╛рдВрдЪ рдХреЛ рд░рд┐рдореЛрдЯ origin рдкрд░ рдкреБрд╢ рдХрд░реЗрдВ

git fetch рд░рд┐рдореЛрдЯ рд╕реЗ рдмрджрд▓рд╛рд╡ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдорд░реНрдЬ рди рдХрд░реЗрдВ
git fetch origin

origin рд╕реЗ рд╕рднреА рдЕрдкрдбреЗрдЯ рдлрд╝реЗрдЪ рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рд▓рд╛рдЧреВ рди рдХрд░реЗрдВ

git fetch origin main

рдХреЗрд╡рд▓ main рдмреНрд░рд╛рдВрдЪ рдХреЛ рдлрд╝реЗрдЪ рдХрд░реЗрдВ

git fetch --all

рд╕рднреА рд░рд┐рдореЛрдЯреНрд╕ рд╕реЗ рдЕрдкрдбреЗрдЯ рдлрд╝реЗрдЪ рдХрд░реЗрдВ

git fetch --prune

рдбрд┐рд▓реАрдЯреЗрдб рдмреНрд░рд╛рдВрдЪреЗрд╕ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ тАФ рдЬреЛ рд░рд┐рдореЛрдЯ рдкрд░ рд╣рдЯрд╛рдП рдЧрдП рд╣реИрдВ

git fetch --dry-run

рдХреНрдпрд╛ рдлрд╝реЗрдЪ рд╣реЛрдЧрд╛ рдпрд╣ рджрд┐рдЦрд╛рдПрдБ, рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛

git fetch origin +main

рд▓реЛрдХрд▓ рдЯреНрд░реИрдХрд┐рдВрдЧ рдмреНрд░рд╛рдВрдЪ (origin/main) рдХреЛ рдлрд╝реЛрд░реНрд╕рдлреБрд▓реА рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ

ЁЯУж рд╕реНрдЯреИрд╢ рдФрд░ рдХреНрд▓реАрдирдЕрдк

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

git stash рдЕрдирдХрдорд┐рдЯреЗрдб рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕реЗрд╡ рдХрд░реЗрдВ (work in progress)
git stash

рдореЙрдбрд┐рдлрд╝рд╛рдЗрдб рдФрд░ рд╕реНрдЯреЗрдЬреНрдб рдлрд╛рдЗрд▓реНрд╕ рд╕реЗрд╡ рдХрд░реЗрдВ рдФрд░ рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдкрд┐рдЫрд▓реЗ рдХрдорд┐рдЯ рдкрд░ рд▓реМрдЯрд╛рдПрдБ

git stash apply

рдирд╡реАрдирддрдо рд╕реНрдЯреИрд╢реНрдб рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ (рд╕реНрдЯреИрд╢ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣реЗрдЧрд╛)

git stash pop

рдирд╡реАрдирддрдо рд╕реНрдЯреИрд╢ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рд╣рдЯрд╛рдПрдБ

git stash list

рд╕рднреА рд╕реНрдЯреИрд╢реНрдб рдмрджрд▓рд╛рд╡реЛрдВ рдХреА рд╕реВрдЪреА рджрд┐рдЦрд╛рдПрдБ

git stash branch feature-fix

рдирдИ рдмреНрд░рд╛рдВрдЪ рдмрдирд╛рдПрдБ рдФрд░ рдирд╡реАрдирддрдо рд╕реНрдЯреИрд╢ рдЙрд╕рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░реЗрдВ

git clean рдЕрдирдЯреНрд░реИрдХреНрдб рдлрд╛рдЗрд▓реНрд╕ (Git рдореЗрдВ рдирд╣реАрдВ) рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдбрд┐рд▓реАрдЯ рдХрд░реЗрдВ
git clean -f

рд╡рд░реНрддрдорд╛рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЕрдирдЯреНрд░реИрдХреНрдб рдлрд╛рдЗрд▓реНрд╕ рдбрд┐рд▓реАрдЯ рдХрд░реЗрдВ

git clean -fd

рдЕрдирдЯреНрд░реИрдХреНрдб рдлрд╛рдЗрд▓реНрд╕ рдФрд░ рдлреЛрд▓реНрдбрд░реНрд╕ рдбрд┐рд▓реАрдЯ рдХрд░реЗрдВ

git clean -n

рдХреНрдпрд╛ рдбрд┐рд▓реАрдЯ рд╣реЛрдЧрд╛ рдЗрд╕рдХрд╛ рдкреНрд░реАрд╡реНрдпреВ рджрд┐рдЦрд╛рдПрдБ (safe dry run)

ЁЯП╖я╕П рдЯреИрдЧреНрд╕

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

git tag рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рд╡рд┐рд╢реЗрд╖ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреИрдЧреНрд╕ рдмрдирд╛рдПрдБ, рд╕реВрдЪреА рджрд┐рдЦрд╛рдПрдБ рдпрд╛ рд╣рдЯрд╛рдПрдБ
git tag -a v1.0 -m "Version 1.0"

v1.0 рдирд╛рдо рдХрд╛ рдПрдХ annotated рдЯреИрдЧ рдмрдирд╛рдПрдБ (рдореИрд╕реЗрдЬ рдХреЗ рд╕рд╛рде)

git tag -d v1.0

v1.0 рдирд╛рдо рдХрд╛ рд▓реЛрдХрд▓ рдЯреИрдЧ рд╣рдЯрд╛рдПрдБ (рд░рд┐рдореЛрдЯ рдкрд░ рдЕрд╕рд░ рдирд╣реАрдВ)

git push рдХрдорд┐рдЯреНрд╕, рдмреНрд░рд╛рдВрдЪреЗрд╕ рдФрд░ рдЯреИрдЧреНрд╕ рдХреЛ рд▓реЛрдХрд▓ рд╕реЗ рд░рд┐рдореЛрдЯ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ
git push origin --tags

рд╕рднреА рд▓реЛрдХрд▓ рдЯреИрдЧреНрд╕ рдХреЛ рд░рд┐рдореЛрдЯ рдкрд░ рдкреБрд╢ рдХрд░реЗрдВ

git push origin v1.0

рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЯреИрдЧ (рдЬреИрд╕реЗ v1.0) рдХреЛ рдкреБрд╢ рдХрд░реЗрдВ

git push origin :refs/tags/v1.0

рд░рд┐рдореЛрдЯ рдЯреИрдЧ v1.0 рд╣рдЯрд╛рдПрдБ

ЁЯЫая╕П рдХреЙрдиреНрдлрд╝реНрд▓рд┐рдХреНрдЯ рд╕рдорд╛рдзрд╛рди

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

git mergetool рдорд░реНрдЬ рдХреЙрдиреНрдлрд╝реНрд▓рд┐рдХреНрдЯреНрд╕ рдХреЛ рд╕реБрд▓рдЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝реБрдЕрд▓ рдЯреВрд▓ рдЦреЛрд▓реЗрдВ
git mergetool --tool=meld

рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЯреВрд▓ (рдЬреИрд╕реЗ Meld) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝реНрд▓рд┐рдХреНрдЯреНрд╕ рдареАрдХ рдХрд░реЗрдВ

git rerere Git рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рджреЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдХреЙрдиреНрдлрд╝реНрд▓рд┐рдХреНрдЯреНрд╕ рдХреИрд╕реЗ рд╕реБрд▓рдЭрд╛рдП
git config --global rerere.enabled true

рдкреБрд░рд╛рдиреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдСрдЯреЛрдореИрдЯрд┐рдХ рд░реА-рдпреВрдЬрд╝ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ

git rerere status

рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗрд╡ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рд╣реИрдВ рдпрд╣ рджрд┐рдЦрд╛рдПрдБ

git rerere diff

рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП Git рдиреЗ рдХреМрди рд╕реЗ рдмрджрд▓рд╛рд╡ рд╕реЗрд╡ рдХрд┐рдП рдпрд╣ рджрд┐рдЦрд╛рдПрдБ

тЪЩя╕П рдЙрдиреНрдирдд рдХрдорд╛рдВрдбреНрд╕

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

git bisect рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд╕ рдХрдорд┐рдЯ рдХреЛ рдвреВрдБрдвреЗрдВ рдЬрд┐рд╕рдиреЗ рдмрдЧ рд▓рд╛рдпрд╛
git bisect start

рдПрдХ рдЕрдЪреНрдЫреЗ рдФрд░ рдЦрд░рд╛рдм рдХрдорд┐рдЯ рдХреЗ рдмреАрдЪ рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рд╢реБрд░реВ рдХрд░реЗрдВ

git bisect bad

рд╡рд░реНрддрдорд╛рди рдХрдорд┐рдЯ рдХреЛ тАЬbadтАЭ рдорд╛рд░реНрдХ рдХрд░реЗрдВ

git bisect good <commit>

рдЬреНрдЮрд╛рдд тАЬgoodтАЭ рдХрдорд┐рдЯ рдорд╛рд░реНрдХ рдХрд░реЗрдВ

git blame рдлрд╝рд╛рдЗрд▓ рдХреА рд╣рд░ рд▓рд╛рдЗрди рдХреЛ рдХрд┐рд╕рдиреЗ рдЕрдВрддрд┐рдо рдмрд╛рд░ рдмрджрд▓рд╛ рдпрд╣ рджрд┐рдЦрд╛рдПрдБ
git blame file.txt

рд╣рд░ рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрдХ рдФрд░ рдХрдорд┐рдЯ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдПрдБ

git blame -L 10,20 file.txt

рдХреЗрд╡рд▓ рд▓рд╛рдЗрдиреНрд╕ 10тАУ20 рдХреЗ рд▓рд┐рдП рдмреНрд▓реЗрдо рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдПрдБ

git blame --show-email file.txt

рд▓реЗрдЦрдХреЛрдВ рдХреЗ рдИрдореЗрд▓ рдкрддреЗ рднреА рджрд┐рдЦрд╛рдПрдБ

git reflog рдмреНрд░рд╛рдВрдЪ рдореВрд╡рдореЗрдВрдЯреНрд╕ рдФрд░ HEAD рдХрд╛ рд░рд┐рдлрд╝рд▓реЙрдЧ рджреЗрдЦреЗрдВ рдФрд░ рдореИрдиреЗрдЬ рдХрд░реЗрдВ
git reflog show main@{1.week.ago}

main рдмреНрд░рд╛рдВрдЪ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ рдХрд╣рд╛рдБ рдереА рдпрд╣ рджреЗрдЦреЗрдВ

git reflog expire --expire=30.days --dry-run

рдХреМрди рд╕реЗ рд░рд┐рдлрд╝рд▓реЙрдЧ рдПрдВрдЯреНрд░реАрдЬрд╝ 30 рджрд┐рди рд╕реЗ рдкреБрд░рд╛рдиреА рд╣реИрдВ рдпрд╣ рдкреНрд░реАрд╡реНрдпреВ рдХрд░реЗрдВ

git reflog delete HEAD@{2}

рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░рд┐рдлрд╝рд▓реЙрдЧ рдПрдВрдЯреНрд░реА рдбрд┐рд▓реАрдЯ рдХрд░реЗрдВ (рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ)

git submodule рд╕рдмрдореЙрдбреНрдпреВрд▓ (рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХреЗ рдЕрдВрджрд░ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА) рдЬреЛрдбрд╝реЗрдВ, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ, рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдпрд╛ рдЬрд╛рдБрдЪреЗрдВ
git submodule add URL path

рдПрдХ рдмрд╛рд╣рд░реА рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХреЛ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ

git submodule update --init

рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рд╕рдмрдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

git submodule foreach git pull

рд╣рд░ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдореЗрдВ git pull рдЪрд▓рд╛рдПрдБ

git submodule sync --recursive

.gitmodules рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рдж URLs рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

git submodule update --remote --merge

рд╕рдмрдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рдЙрдирдХреА рдирд╡реАрдирддрдо рдХрдорд┐рдЯреНрд╕ рддрдХ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ

git archive рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрдорд┐рдЯ рдпрд╛ рдмреНрд░рд╛рдВрдЪ рд╕реЗ рдлрд╛рдЗрд▓реНрд╕ рдХрд╛ рдЖрд░реНрдХрд╛рдЗрд╡ рдмрдирд╛рдПрдБ (zip, tar, рдЖрджрд┐)
git archive --format=zip HEAD > archive.zip

рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ ZIP рдЖрд░реНрдХрд╛рдЗрд╡ рдмрдирд╛рдПрдБ

git archive -o release.tar.gz HEAD

рд╡рд░реНрддрдорд╛рди HEAD рд╕реЗ .tar.gz рдЖрд░реНрдХрд╛рдЗрд╡ рдмрдирд╛рдПрдБ

git archive --format=tar --prefix=project/ HEAD \| gzip > project.tar.gz

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ .tar.gz рдЖрд░реНрдХрд╛рдЗрд╡ рдмрдирд╛рдПрдБ рдФрд░ рд╕рднреА рдлрд╛рдЗрд▓реНрд╕ рдХреЛ project/ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗрдВ

git gc рдЕрдирд╛рд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реНрд╕ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ рдФрд░ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ
git gc --aggressive

рдЧрд╣рди рдХреНрд▓реАрдирдЕрдк рдФрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░реЗрдВ

git gc --prune=now

рд╕рднреА рдЕрдкреНрд░рд╛рдкреНрдп рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рддреБрд░рдВрдд рд╣рдЯрд╛рдПрдБ (рдЦрддрд░рдирд╛рдХ)

git shortlog рд▓реЗрдЦрдХреЛрдВ рдФрд░ рдЙрдирдХреЗ рдХрдорд┐рдЯреНрд╕ рдХрд╛ рддреНрд╡рд░рд┐рдд рд╕рд╛рд░рд╛рдВрд╢
git shortlog -e

рд▓реЗрдЦрдХреЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рдИрдореЗрд▓ рдкрддреЗ рджрд┐рдЦрд╛рдПрдБ

git shortlog -s -n

рдХрд┐рддрдиреЗ рдХрдорд┐рдЯреНрд╕ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЦрдХ рдиреЗ рдХрд┐рдП, рдпрд╣ рджрд┐рдЦрд╛рдПрдБ

git shortlog -sne

рдирд╛рдо рдФрд░ рдИрдореЗрд▓ рдкрддреЛрдВ рд╕рд╣рд┐рдд рд╡рд┐рд╕реНрддреГрдд рдЧрддрд┐рд╡рд┐рдзрд┐ рдЯреНрд░реИрдХрд┐рдВрдЧ

git revert рдкрд┐рдЫрд▓реЗ рдХрдорд┐рдЯ рдХреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдХрдорд┐рдЯ рдмрдирд╛рдПрдБ
git revert HEAD

рдЕрдВрддрд┐рдо рдХрдорд┐рдЯ рдХреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ рдФрд░ рдирдпрд╛ рдХрдорд┐рдЯ рдмрдирд╛рдПрдБ

git revert <commit_hash>

рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрдорд┐рдЯ (рд╣реИрд╢ рджреНрд╡рд╛рд░рд╛) рдХреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ рдФрд░ рдирдпрд╛ рдХрдорд┐рдЯ рдЬреЛрдбрд╝реЗрдВ

ЁЯРЩ GitHub CLI

gh рдЖрдкрдХреЛ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ GitHub рдореИрдиреЗрдЬ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

gh auth login GitHub рд╣реЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░реЗрдВ рддрд╛рдХрд┐ CLI рдХрдорд╛рдВрдбреНрд╕ рдЖрдкрдХреЗ рдЕрдХрд╛рдЙрдВрдЯ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░ рд╕рдХреЗрдВ
gh auth login --with-token < mytoken.txt

рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди (mytoken.txt) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░реЗрдВ

gh auth login --hostname enterprise.internal

GitHub Enterprise рд╕рд░реНрд╡рд░ (github.com рдирд╣реАрдВ) рдкрд░ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░реЗрдВ

gh repo clone GitHub рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХреЛ рдЕрдкрдиреА рд▓реЛрдХрд▓ рдорд╢реАрди рдкрд░ рдХреНрд▓реЛрди рдХрд░реЗрдВ
gh repo clone user/repo

user рджреНрд╡рд╛рд░рд╛ рдУрдиреНрдб repo рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХреЛ repo рдирд╛рдордХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреНрд▓реЛрди рдХрд░реЗрдВ

gh repo clone cli/cli -- --depth=1

рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХреНрд▓реЛрди рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдирд╡реАрдирддрдо рдХрдорд┐рдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХреНрд▓реЛрди рддреЗрдЬрд╝ рдФрд░ рдЫреЛрдЯрд╛ рд╣реЛ

gh repo clone cli/cli workspace/cli

рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХреЛ workspace/cli рдирд╛рдордХ рдХрд╕реНрдЯрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреНрд▓реЛрди рдХрд░реЗрдВ

gh issue list GitHub рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдореЗрдВ issues рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ, рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдирджрдВрдбреЛрдВ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ
gh issue list --assignee "@me"

рдЖрдкрдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП issues рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ

gh issue list --state all

рд╕реНрдЯреЗрдЯ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ issues рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ (open рдпрд╛ closed)

gh issue list --search "error no:assignee sort:created-asc"

тАЬerrorтАЭ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ issues рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ, рдмрд┐рдирд╛ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП, рдирд┐рд░реНрдорд╛рдг рддрд┐рдерд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ

gh pr create CLI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ GitHub рдкрд░ рдПрдХ pull request рдмрдирд╛рдПрдБ
gh pr create --title "..."

рджрд┐рдП рдЧрдП рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде pull request рдмрдирд╛рдПрдБ

gh pr create --project "Roadmap"

тАЬRoadmapтАЭ рдирд╛рдордХ GitHub рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ pull request рд▓рд┐рдВрдХ рдХрд░реЗрдВ

gh pr create --base develop --head monalisa:feature

monalisa рдлреЛрд░реНрдХ рдХреА feature рдмреНрд░рд╛рдВрдЪ рд╕реЗ develop рдмреНрд░рд╛рдВрдЪ рдкрд░ PR рдмрдирд╛рдПрдБ

gh repo create CLI рд╕реЗ рдПрдХ рдирдИ GitHub рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдмрдирд╛рдПрдБ
gh repo create my-project

GitHub рдкрд░ my-project рдирд╛рдордХ рдирдИ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдмрдирд╛рдПрдБ (рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдкреНрд░реЙрдореНрдкреНрдЯреНрд╕ рдлреЙрд▓реЛ рдХрд░реЗрдВрдЧреЗ)

gh repo create my-project --public --clone

рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдмрдирд╛рдПрдБ рдФрд░ рд▓реЛрдХрд▓ рдХреНрд▓реЛрди рдХрд░реЗрдВ

gh repo create my-project --private --source=. --remote=upstream

рд╡рд░реНрддрдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдПрдХ рдирд┐рдЬреА рд░рд┐рдореЛрдЯ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдмрдирд╛рдПрдБ рдФрд░ upstream рдирд╛рдордХ рд░рд┐рдореЛрдЯ рдЬреЛрдбрд╝реЗрдВ

ЁЯТб Git рдЙрдкрдирд╛рдо (рдЙрдкрдпреЛрдЧреА рд╢реЙрд░реНрдЯрдХрдЯреНрд╕)

рд╕рд╛рдорд╛рдиреНрдп Git рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рддреЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдирд╛рдо рд╕реЗрдЯ рдХрд░реЗрдВ:

git config --global alias.br branch                                       # рд╢реЙрд░реНрдЯрдХрдЯ: git branch
git config --global alias.ci commit                                       # рд╢реЙрд░реНрдЯрдХрдЯ: git commit
git config --global alias.co checkout                                     # рд╢реЙрд░реНрдЯрдХрдЯ: git checkout
git config --global alias.graph "log --oneline --graph --all --decorate"  # рд╕реБрдВрджрд░ рдЗрддрд┐рд╣рд╛рд╕ рдЧреНрд░рд╛рдл
git config --global alias.last "log -1 HEAD"                              # рдЕрдВрддрд┐рдо рдХрдорд┐рдЯ рджрд┐рдЦрд╛рдПрдБ
git config --global alias.st status                                       # рд╢реЙрд░реНрдЯрдХрдЯ: git status

ЁЯЪА рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдиреНрдирдд Git рдХрдорд╛рдВрдбреНрд╕

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

git filter-repo Git рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рддреЗрдЬрд╝ рдЯреВрд▓; рдлрд╝рд╛рдЗрд▓реЗрдВ, рд▓реЗрдЦрдХ рдпрд╛ рдкрде рд╣рдЯрд╛рдиреЗ/рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ git filter-branch рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рддреЗрдЬрд╝ рд╣реИ
git filter-repo --path secret.txt --invert-paths

рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдпрд╛ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реАрдЬрд╝ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВред рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

git filter-repo --replace-text replacements.txt

рдкреВрд░реЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдпрд╛ рдкреИрдЯрд░реНрдиреНрд╕ рдХреЛ рдмрд▓реНрдХ рдореЗрдВ рдмрджрд▓реЗрдВ (рдЙрджрд╛. рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рд╕рд╛рдлрд╝ рдХрд░рдирд╛)

git filter-repo --subdirectory-filter src

рд╕рдмрдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдПрдХ рдирдИ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдореЗрдВ рдирд┐рдХрд╛рд▓реЗрдВ, рдХрдорд┐рдЯ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрддреЗ рд╣реБрдП

git worktree рдПрдХ рд╣реА рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рд╕реЗ рдЬреБрдбрд╝реЗ рдХрдИ рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реАрдЬрд╝ рдореИрдиреЗрдЬ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдХреНрд▓реЛрди рдХрд┐рдП рдмрд┐рдирд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреНрд░рд╛рдВрдЪреЛрдВ рдкрд░ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ
git worktree add ../feature feature-branch

рдЙрд╕реА рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рд╕реЗ рдЬреБрдбрд╝рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдХрд┐рдВрдЧ рдЯреНрд░реА рдмрдирд╛рдПрдБ, рдЬрд┐рд╕рд╕реЗ рдкреИрд░реЗрд▓рд▓ рдмреНрд░рд╛рдВрдЪ рдЪреЗрдХрдЖрдЙрдЯ рд╕рдВрднрд╡ рд╣реЛ

git worktree list

рд╕рднреА рд╕рдХреНрд░рд┐рдп рд╡рд░реНрдХрдЯреНрд░реАрдЬрд╝, рдЙрдирдХреЗ рдкрде рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдмреНрд░рд╛рдВрдЪреЗрд╕ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ

git worktree remove ../feature

рд╡рд░реНрдХрдЯреНрд░реА рд╣рдЯрд╛рдПрдБ рдЬрдм рдЗрд╕рдХреА рдЬрд╝рд░реВрд░рдд рди рд╣реЛ, рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реАрдЬрд╝ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ

git replace рдЕрд╕реНрдерд╛рдпреА рд░реЗрдлрд░реЗрдВрд╕реЗрд╕ рдмрдирд╛рдПрдБ рдЬреЛ рдореМрдЬреВрджрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдиреЙрди-рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд┐рд╡ рд▓реЛрдХрд▓ рдЗрддрд┐рд╣рд╛рд╕ рдореИрдирд┐рдкреБрд▓реЗрд╢рди рдФрд░ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рд╕рдВрднрд╡ рд╣реЛ
git replace <old_commit> <new_commit>

рд▓реЛрдХрд▓ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдореЗрдВ рдПрдХ рдХрдорд┐рдЯ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рджреВрд╕рд░реЗ рд╕реЗ рдмрджрд▓реЗрдВ

git replace --list

рд╕рднреА рд╕рдХреНрд░рд┐рдп рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рд░реЗрдлрд╝реНрд╕ рджрд┐рдЦрд╛рдПрдБ

git replace -d <replace_ref>

рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рд░реЗрдлрд╝ рд╣рдЯрд╛рдПрдБ рддрд╛рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреБрдирдГрд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рд╕рдХреЗ

git stash рдЕрдирдХрдорд┐рдЯреЗрдб рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕реНрдЯреИрдХ рдкрд░ рд╕реЗрд╡ рдХрд░реЗрдВ, рдЬрд┐рд╕рд╕реЗ рдмрд┐рдирд╛ рдЕрдзреВрд░рд╛ рдХрд╛рдо рдХрдорд┐рдЯ рдХрд┐рдП рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рд╕рдВрднрд╡ рд╣реЛ
git stash push -p

рд╕реНрдЯреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрдВрдЬреЗрд╕ рдХреЛ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡рд▓реА рдЪреБрдиреЗрдВ

git stash push -m "WIP selective stash"

рдЖрд╕рд╛рди рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдореИрд╕реЗрдЬ рдХреЗ рд╕рд╛рде рд╕реНрдЯреИрд╢ рдмрдирд╛рдПрдБ

git stash apply stash@{2}

рд╕реНрдЯреИрд╢ рд╕реВрдЪреА рд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдЯреИрд╢ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдмрд┐рдирд╛ рдЙрд╕реЗ рд╣рдЯрд╛рдП

git rebase рдХрдорд┐рдЯреНрд╕ рдХреЛ рджреВрд╕рд░реЗ рдмреЗрд╕ рдкрд░ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рд╕рд╛рдлрд╝ рдФрд░ рд░реИрдЦрд┐рдХ рдЗрддрд┐рд╣рд╛рд╕ рдмрдирд╛рдПрдБ рдФрд░ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡рд▓реА рдПрдбрд┐рдЯ рдХрд░реЗрдВ
git rebase --interactive --autosquash

рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд░рд┐рдмреЗрд╕ рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬреЛ fixup/squash рдХрдорд┐рдЯреНрд╕ рдХреЛ рдСрдЯреЛрдореИрдЯрд┐рдХрд▓реА squash рдХрд░рддрд╛ рд╣реИ

git rebase -i --autosquash HEAD~10

push рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрдорд┐рдЯ рдЗрддрд┐рд╣рд╛рд╕ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рд╣реЗрддреБ fixup/squash рдХрдорд┐рдЯреНрд╕ рдХреЛ рдСрдЯреЛрдореИрдЯрд┐рдХрд▓реА squash рдХрд░реЗрдВ

git commit --fixup <commit>

рдПрдХ fixup рдХрдорд┐рдЯ рдмрдирд╛рдПрдБ рдЬрд┐рд╕реЗ рд░рд┐рдмреЗрд╕ рдХреЗ рджреМрд░рд╛рди squash рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

git commit --squash <commit>

рдПрдХ squash рдХрдорд┐рдЯ рдмрдирд╛рдПрдБ рдЬрд┐рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдорд┐рдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

git bisect рдмрдЧ рд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдорд┐рдЯ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рдЯреВрд▓; рдХреНрд░рдорд┐рдХ рдХрдорд┐рдЯреНрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдХреЗ рджреЛрд╖рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рдЦреЛрдЬреЗрдВ
git bisect run

рд╣рд░ рдХрдорд┐рдЯ рдкрд░ рдЯреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдХрд░ рдмрдЧ рд╡рд╛рд▓реЗ рдХрдорд┐рдЯ рдХреА рдкрд╣рдЪрд╛рди рдСрдЯреЛрдореИрдЯрд┐рдХ рдХрд░реЗрдВ

git bisect start; git bisect bad; git bisect good v1.0; git bisect run ./test.sh

рдкреНрд░рддреНрдпреЗрдХ рдХрдорд┐рдЯ рдкрд░ рдЯреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдХрд░ рдмрдЧ рдкрд╣рдЪрд╛рди рдХреА рдЧрддрд┐ рддреЗрдЬрд╝ рдХрд░реЗрдВ

git bisect visualize

рдмрд╛рдЗрд╕реЗрдХреНрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЯреВрд▓ рдЦреЛрд▓реЗрдВ

git bisect reset

рдмрд╛рдЗрд╕реЗрдХреНрдЯ рдореЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ рдФрд░ рдореВрд▓ HEAD рдкрд░ рд▓реМрдЯреЗрдВ

git commit рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдореЗрдВ рдмрджрд▓рд╛рд╡ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ: amend, sign, fixup, рдФрд░ рдореИрд╕реЗрдЬ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝реЗрд╢рди
git commit --gpg-sign

рдЕрдкрдиреЗ GPG key рд╕реЗ рд╕рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реБрдЖ рдХрдорд┐рдЯ рдмрдирд╛рдПрдБ рддрд╛рдХрд┐ рдЗрд╕рдХреА рд╕рддреНрдпрддрд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХреА рдЬрд╛ рд╕рдХреЗ

git commit -S -m "Signed commit"

рдЕрдкрдиреЗ GPG key рд╕реЗ рдХрдорд┐рдЯреНрд╕ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХрд▓реА рд╕рд╛рдЗрди рдХрд░реЗрдВ

git config --global user.signingkey <key_id>

рдЧреНрд▓реЛрдмрд▓реА рд╕рд╛рдЗрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП GPG key рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

git log --show-signature

рдХрдорд┐рдЯреНрд╕ рдХреЗ рд▓рд┐рдП GPG рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдЬрд╛рдирдХрд╛рд░реА рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рджрд┐рдЦрд╛рдПрдБ

git reflog HEAD рдФрд░ рдмреНрд░рд╛рдВрдЪ рдЕрдкрдбреЗрдЯреНрд╕ рдХрд╛ рд▓реЙрдЧ рд░рдЦреЗрдВ; рдЦреЛрдП рд╣реБрдП рдХрдорд┐рдЯреНрд╕ рдХреЛ рд░рд┐рдХрд╡рд░ рдХрд░рдиреЗ рдФрд░ рд▓реЛрдХрд▓ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ
git reset --hard HEAD@{3}

рдмреНрд░рд╛рдВрдЪ рдХреЛ reflog рд╕реЗ рдкрд┐рдЫрд▓реЗ рд╕реНрдЯреЗрдЯ рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ

git reflog expire --expire=now --all

рд╕рднреА reflog рдПрдВрдЯреНрд░реАрдЬрд╝ рдХреЛ рддреБрд░рдВрдд рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ (рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)

ЁЯз░ рдкреНрд░реЛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдЯрд┐рдкреНрд╕ рдФрд░ рдСрдЯреЛрдореЗрд╢рди

рд╡рд┐рд╖рдп

рдХрдорд╛рдВрдбреНрд╕ / рдЙрджрд╛рд╣рд░рдг

рд╡реНрдпрд╛рдЦреНрдпрд╛ рдФрд░ рдкреНрд░реЛ рдЯрд┐рдкреНрд╕

рдЖрдХреНрд░рд╛рдордХ рд░рд┐рдкреЛ рдХреНрд▓реАрдирдЕрдк

git gc --aggressive --prune=now

рдЧрд╣рди рдЧрд╛рд░реНрдмреЗрдЬ рдХрд▓реЗрдХреНрд╢рди рдФрд░ рддреБрд░рдВрдд рдЕрдкреНрд░рд╛рдкреНрдп рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╣рдЯрд╛рдПрдБред рдХреЗрд╡рд▓ рдореЗрдВрдЯреЗрдиреЗрдВрд╕ рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рд╕рдорд╛рдирд╛рдВрддрд░ рдмреНрд░рд╛рдВрдЪ рд╡рд░реНрдХрдЯреНрд░реАрдЬрд╝

git worktree add ../feature-branch feature

рдПрдХ рд╕рд╛рде рдлреАрдЪрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд░реНрдХрд┐рдВрдЧ рдЯреНрд░реА рд░рдЦреЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд▓реЛрдирд┐рдВрдЧ рдХреА рдЬрд╝рд░реВрд░рдд рд╕реЗ рдмрдЪреЗрдВ

рд╕рд╛рдлрд╝, рд░реИрдЦрд┐рдХ рдЗрддрд┐рд╣рд╛рд╕

git rebase -i --autosquash

push рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд░рд┐рдмреЗрд╕ рдФрд░ autosquash рдХрд░реЗрдВ

рд╕реБрд░рдХреНрд╖рд┐рдд рдХрдорд┐рдЯреНрд╕

git commit -S

GPG рдХреЗ рд╕рд╛рде рдХрдорд┐рдЯреНрд╕ рд╕рд╛рдЗрди рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдмрдврд╝реЗ

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмрд╛рдЗрд╕реЗрдХреНрдЯрд┐рдВрдЧ

git bisect run ./test-script.sh

рд╣рд░ рдХрдорд┐рдЯ рдкрд░ рдЯреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдХрд░ рдмрдЧ рд╣рдВрдЯрд┐рдВрдЧ рдСрдЯреЛрдореЗрдЯ рдХрд░реЗрдВ

рдХреЙрдиреНрдлрд╝реНрд▓рд┐рдХреНрдЯ рд╕рдорд╛рдзрд╛рди рдХреИрд╢

git config --global rerere.enabled true

рдХреЙрдиреНрдлрд╝реНрд▓рд┐рдХреНрдЯ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рддрд╛рдХрд┐ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд░реНрдЬ рдХреЙрдиреНрдлрд╝реНрд▓рд┐рдХреНрдЯреНрд╕ рдЬрд▓реНрджреА рд╕реБрд▓рдЭреЗрдВ

рд╕рд╛рдЭрд╛ рдЙрдкрдирд╛рдо рдФрд░ рд╣реБрдХреНрд╕

рдЯреАрдо рдорд╛рдирдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп Git рдЙрдкрдирд╛рдо рдФрд░ рдХрдорд┐рдЯ рд╣реБрдХреНрд╕ рдХреЛ рд╕рд╛рдЭрд╛ рд░рд┐рдкреЛ рдпрд╛ CI рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рд░рдЦреЗрдВ

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрди

ЁЯза рдЯрд┐рдк

рд╕рдм рдХреБрдЫ рдпрд╛рдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗрдВред --help рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЦреЛрдЬреЗрдВ рдФрд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:

git help <command>
git status

ЁЯМР рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ

ЁЯУШ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Git рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди тАФ рд╕рднреА Git рдХрдорд╛рдВрдбреНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рдореИрдиреБрдЕрд▓:
https://git-scm.com/docs

ЁЯУЩ Learn Git Branching тАФ рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдХреЙрдиреНрд╕реЗрдкреНрдЯреНрд╕ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓:
https://learngitbranching.js.org

ЁЯУХ Pro Git рдкреБрд╕реНрддрдХ (рдирд┐рдГрд╢реБрд▓реНрдХ, Scott Chacon рдФрд░ Ben Straub рджреНрд╡рд╛рд░рд╛):
https://git-scm.com/book

ЁЯУЧ Git Cheatsheet (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдВрджрд░реНрдн):
https://education.github.com/git-cheat-sheet-education.pdf