πŸ™ Git ΠΈ GitHub CLI

Multilingual DevOps cheat sheet: Linux, Docker, Git, Kubernetes, Helm, Terraform, practical scenarios & templates.
Π”Π°Ρ‚Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

31 августа 2025 Π³.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Git для контроля вСрсий, вСтвлСния, Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ рСпозиториями, stash, Ρ‚Π΅Π³Π°ΠΌΠΈ ΠΈ GitHub CLI.

πŸ”Ή Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Команда

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ОписаниС

git add Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ (staging area)
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

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ fixup-ΠΊΠΎΠΌΠΌΠΈΡ‚ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ squash Π²ΠΎ врСмя ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ rebase

git config ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ рСпозитория ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ настройки
git config --global user.name "Name"

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ глобальноС имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Git

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

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ email Git

git config --list

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС настройки Git (имя, email, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ Ρ‚. Π΄.)

git diff ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ различия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ, ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ ΠΈ Ρ‚. Π΄.
git diff HEAD

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ измСнСния с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° (Π½Π΅ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ измСнСния)

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 Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° рСгистра (Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Login, LOGIN, login ΠΈ Ρ‚. Π΄.)

git init Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ пустой Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ
git init my-project

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ my-project

git init --bare

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Β«Π³ΠΎΠ»Ρ‹ΠΉΒ» Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ (bare repository)

git log ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π» ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²
git log --oneline

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΌ однострочном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅

git log --graph --all

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π²Π΅Ρ‚ΠΊΠΈ Π² Π²ΠΈΠ΄Π΅ Π³Ρ€Π°Ρ„Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

git log -p --stat

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ измСнСния ΠΈ статистику Ρ„Π°ΠΉΠ»ΠΎΠ² для ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

git reset Π£Π±Ρ€Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· staging, сохранив измСнСния Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ
git reset HEAD file.txt

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈΠ· staging (ΠΏΡ€Π°Π²ΠΊΠΈ останутся)

git reset --hard HEAD~1

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π°Π·Π°Π΄ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС измСнСния (Π±Π΅Π·Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ!)

git reset --soft HEAD~1

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

git reset --mixed HEAD~1

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚, оставив измСнСния Π½Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Π΄Π΅Ρ€Π΅Π²Π΅

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

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ 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

ВсСгда ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ merge-ΠΊΠΎΠΌΠΌΠΈΡ‚ (Π΄Π°ΠΆΠ΅ Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ fast-forward)

git merge --abort

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ измСнСния ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅

git rebase ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΡ‚ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚
git rebase main

ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΡ‚ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ вашСй Π²Π΅Ρ‚ΠΊΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… main

git rebase -i HEAD~3

Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдниС 3 ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

git rebase --abort

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉΡΡ rebase

git rebase -i --autosquash HEAD~5

АвтоматичСски ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ fixup- ΠΈ squash-ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π²ΠΎ врСмя ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ rebase

git cherry-pick ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ
git cherry-pick <hash>

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΏΠΎ Ρ…ΡΡˆΡƒ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ

git cherry-pick --continue

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ cherry-pick послС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²

git cherry-pick A^..B

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΎΡ‚ A (Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ) Π΄ΠΎ B (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ)

πŸ“‘ Π£Π΄Π°Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ

Команда

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ОписаниС

git remote Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ссылками Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, GitHub)
git remote -v

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΈ URL ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²

git remote add origin URL

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ origin

git pull Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈ автоматичСски ΡΠ»ΠΈΡ‚ΡŒ измСнСния ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ
git pull origin main

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ ΡΠ»ΠΈΡ‚ΡŒ измСнСния ΠΈΠ· main Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ сСрвСрС Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ

git pull --rebase origin main

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ измСнСния ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ rebase Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ вмСсто слияния

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), пСрСзаписав ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹

πŸ“¦ Stash ΠΈ очистка

Команда

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ОписаниС

git stash Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ измСнСния (work in progress)
git stash

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π·Π°Ρ‚Π΅ΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΊ послСднСму ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ

git stash apply

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдниС сохранённыС измСнСния (stash останСтся)

git stash pop

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдний stash

git stash list

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ список всСх сохранённых ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

git stash branch feature-fix

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ послСдний stash

git clean Π‘Π΅Π·Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ нСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹ (Π½Π΅ находящиСся ΠΏΠΎΠ΄ Git)
git clean -f

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ нСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ

git clean -fd

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ нСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ

git clean -n

ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ (бСзопасный dry run)

🏷️ ВСги

Команда

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ОписаниС

git tag Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ список ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π΅Π³ΠΈ для ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ Π² истории (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π»ΠΈΠ·ΠΎΠ²)
git tag -a v1.0 -m "Version 1.0"

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚Π΅Π³ v1.0 с сообщСниСм (сохраняСтся ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Git, ΡƒΠ΄ΠΎΠ±Π½ΠΎ для Ρ€Π΅Π»ΠΈΠ·ΠΎΠ²)

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 ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт для ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π² Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ merge-ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²
git mergetool --tool=meld

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ инструмСнт (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Meld) для исправлСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²

git rerere ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Git Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π²Ρ‹ Ρ€Π°Π½Π΅Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π»ΠΈ merge-ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹
git config --global rerere.enabled true

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ автоматичСскоС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²

git rerere status

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, для ΠΊΠ°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² сохранСны Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²

git rerere diff

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Git сохранил для Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ использования

βš™οΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Команда

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ОписаниС

git bisect Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ появилась ошибка
git bisect start

ΠΠ°Ρ‡Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск ΠΌΠ΅ΠΆΠ΄Ρƒ извСстным Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΈ ΠΏΠ»ΠΎΡ…ΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π±Π°Π³

git bisect bad

ΠŸΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΊΠ°ΠΊ β€œΠΏΠ»ΠΎΡ…ΠΎΠΉβ€ (содСрТит Π±Π°Π³)

git bisect good <commit>

ΠŸΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ извСстный β€œΡ…ΠΎΡ€ΠΎΡˆΠΈΠΉβ€ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Π°Π³Π° Π½Π΅ Π±Ρ‹Π»ΠΎ

git blame ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΡ‚ΠΎ послСдний Ρ€Π°Π· ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку Ρ„Π°ΠΉΠ»Π°, с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ€Π΅Π²ΠΈΠ·ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€Π°
git blame file.txt

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π° ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Ρ„Π°ΠΉΠ»Π°

git blame -L 10,20 file.txt

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ blame-ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для строк с 10 ΠΏΠΎ 20

git blame --show-email file.txt

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ email Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² вмСстС с измСнСниями строк

git reflog ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ reflog (ΠΆΡƒΡ€Π½Π°Π»ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΉ Π²Π΅Ρ‚ΠΎΠΊ ΠΈ HEAD)
git reflog show main@{1.week.ago}

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΡƒΠ΄Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»Π° Π²Π΅Ρ‚ΠΊΠ° main нСдСлю Π½Π°Π·Π°Π΄

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

ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ reflog-записСй ΡΡ‚Π°Ρ€ΡˆΠ΅ 30 Π΄Π½Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ (Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ)

git reflog delete HEAD@{2}

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ запись Π² reflog (остороТно β€” это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° восстановлСниС)

git submodule Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²)
git submodule add URL path

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ внСшний Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ

git submodule update --init

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ всС ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, пСрСчислСнныС Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ

git submodule foreach git pull

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git pull Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ подмодуля для ΠΈΡ… обновлСния Π΄ΠΎ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

git submodule sync --recursive

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ URL ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ послС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ .gitmodules

git submodule update --remote --merge

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π΄ΠΎ послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΡ… ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ

git archive Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ² (zip, tar ΠΈ Ρ‚. Π΄.) Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈΠ»ΠΈ Π²Π΅Ρ‚ΠΊΠΈ
git archive --format=zip HEAD > archive.zip

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ZIP-Π°Ρ€Ρ…ΠΈΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ HEAD

git archive -o release.tar.gz HEAD

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ сТатый Π°Ρ€Ρ…ΠΈΠ² .tar.gz ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ HEAD

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

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ список Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² с ΠΈΡ… email (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π°Π½Π°Π»ΠΈΠ·Π° Π²ΠΊΠ»Π°Π΄Π°)

git shortlog -s -n

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ количСство ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΡ€Π°, отсортировав ΠΏΠΎ числу ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

git shortlog -sne

Π’ΠΎ ΠΆΠ΅ самоС, Π½ΠΎ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈ email β€” ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ отслСТивания активности

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

ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ repo, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ user, Π² ΠΏΠ°ΠΏΠΊΡƒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ repo

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

ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ для Π±ΠΎΠ»Π΅Π΅ быстрого ΠΈ Π»Ρ‘Π³ΠΊΠΎΠ³ΠΎ ΠΊΠ»ΠΎΠ½Π°

gh repo clone cli/cli workspace/cli

ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ workspace/cli

gh issue list ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ список issues Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ GitHub с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ критСриям
gh issue list --assignee "@me"

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ issues, Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ Π²Π°ΠΌ

gh issue list --state all

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ issues нСзависимо ΠΎΡ‚ ΠΈΡ… состояния (ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΈΠ»ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅)

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

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ issues, содСрТащиС слово β€œerror”, Π±Π΅Π· Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ исполнитСля, отсортированныС ΠΏΠΎ Π΄Π°Ρ‚Π΅ создания (ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ)

gh pr create Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ pull request Π½Π° GitHub Ρ‡Π΅Ρ€Π΅Π· CLI
gh pr create --title "..."

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ pull request с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ

gh pr create --project "Roadmap"

Π‘Π²ΡΠ·Π°Ρ‚ΡŒ pull request с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ GitHub ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ β€œRoadmap”

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

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ PR ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ feature Ρ„ΠΎΡ€ΠΊΠ° monalisa Π² Π²Π΅Ρ‚ΠΊΡƒ develop

gh repo create Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ GitHub Ρ‡Π΅Ρ€Π΅Π· CLI
gh repo create my-project

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ my-project Π½Π° GitHub (с ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ подсказками)

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

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ сразу ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ локально

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

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ remote с ΠΈΠΌΠ΅Π½Π΅ΠΌ 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-branch. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ остороТно

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

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π·Π°ΠΌΠ΅Π½Ρ‹ (replacement refs)

git replace -d <replace_ref>

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ исходноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

git stash Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ измСнСния Π² стСк, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ Π±Π΅Π· фиксации Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹
git stash push -p

Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ для сохранСния Π² stash, обСспСчивая Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ

git stash push -m "WIP selective stash"

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ stash с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ сообщСниСм для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

git stash apply stash@{2}

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ stash ΠΈΠ· списка, Π½Π΅ удаляя Π΅Π³ΠΎ

git rebase ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‡ΠΈΡΡ‚ΡƒΡŽ, Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ
git rebase --interactive --autosquash

ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ rebase, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски пСрСупорядочит ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ (squash) ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ fixup/squash

git rebase -i --autosquash HEAD~10

АвтоматичСски ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ fixup/squash-ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, очистив ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ

git commit --fixup <commit>

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ fixup-ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½ ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ rebase

git commit --squash <commit>

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ squash-ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ ΠΏΡ€ΠΈ rebase

git bisect Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска для быстрого нахоТдСния ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ появилась ошибка, тСстируя ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния ΠΈ суТая ΠΊΡ€ΡƒΠ³ поиска
git bisect run

ΠΠ²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс bisect, запуская тСстовый скрипт Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ для быстрого поиска ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ измСнСния

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

ΠΠ²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ поиск Π±Π°Π³ΠΎΠ², выполняя тСстовый скрипт Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускоряСт процСсс

git bisect visualize

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ графичСский инструмСнт для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ процСсса bisect

git bisect reset

Π’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠ° bisect ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ исходному HEAD

git commit Π€ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (amend, sign, fixup, настройка сообщСний) для поддСрТания качСствСнной истории ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
git commit --gpg-sign

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚, подписанный вашим GPG-ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ подлинности ΠΈ авторства

git commit -S -m "Signed commit"

ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GPG-ΠΊΠ»ΡŽΡ‡Π° для обСспСчСния цСлостности ΠΈ подтвСрТдСния авторства

git config --global user.signingkey <key_id>

ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ GPG-ΠΊΠ»ΡŽΡ‡ для подписания ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² глобально

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

ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ rebase с autosquash для поддСрТания чистой ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΉ истории

БСзопасныС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹

git commit -S

ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ GPG для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ довСрия Π² совмСстных рСпозиториях; часто ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ срСдС

Автоматизированный bisect

git bisect run ./test-script.sh

ΠΠ²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ поиск Π±Π°Π³ΠΎΠ², запуская тСстовый скрипт Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π΅ Π² процСссС bisect

Кэш Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²

git config --global rerere.enabled true

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΈΡ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… rebase ΠΈΠ»ΠΈ merge

ΠžΠ±Ρ‰ΠΈΠ΅ алиасы ΠΈ Ρ…ΡƒΠΊΠΈ

Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ алиасы Git ΠΈ commit hooks Π² ΠΎΠ±Ρ‰Π΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠ»ΠΈ 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