đ Git āĻāĻŦāĻ GitHub CLI
āĻāĻžāϰā§āϏāύ āĻāύā§āĻā§āϰā§āϞ, āĻŦā§āϰāĻžāĻā§āĻāĻŋāĻ, āϰāĻŋāĻŽā§āĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ, āϏā§āĻā§āϝāĻžāĻļ, āĻā§āϝāĻžāĻ āĻāĻŦāĻ GitHub CLI āĻāϰ āĻāύā§āϝ āĻŽā§āϞāĻŋāĻ āĻ āĻāύā§āύāϤ Git āĻāĻŽāĻžāύā§āĻĄāĨ¤
đš āĻŽā§āϞāĻŋāĻ āĻāĻŽāĻžāύā§āĻĄ
| āĻāĻŽāĻžāύā§āĻĄ | āĻāĻĻāĻžāĻšāϰāĻŖ | āĻŦāϰā§āĻŖāύāĻž | 
|---|---|---|
| git add | āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞāĻā§ staging area-āĻ āϝā§āĻ āĻāϰāĻž | |
| git add file.txt | āĻĒāϰāĻŦāϰā§āϤ⧠āĻāĻŽāĻŋāĻā§āϰ āĻāύā§āϝ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĢāĻžāĻāϞ stage āĻāϰāĻž | |
| git add . | āĻŦāϰā§āϤāĻŽāĻžāύ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ āĻ āύāĻŋāĻā§āϰ āϏāĻŦ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ stage āĻāϰāĻž | |
| git add -p | āĻāύā§āĻāĻžāϰâā§āϝāĻžāĻā§āĻāĻŋāĻāĻāĻžāĻŦā§ āĻĢāĻžāĻāϞā§āϰ āĻā§āύ āĻ āĻāĻļ stage āĻāϰāĻŦā§āύ āϤāĻž āĻŦā§āĻā§ āύā§āĻāϝāĻŧāĻž (partial commit-āĻāϰ āĻāύā§āϝ āĻāĻĒāϝā§āĻā§) | |
| git clone | āĻāĻāĻāĻŋ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āύāϤā§āύ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āĻā§āϞā§āύ āĻāϰāĻž | |
| git clone -b branch_name URL | āĻĄāĻŋāĻĢāϞā§āĻā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻŦā§āϰāĻžāĻā§āĻ āĻā§āϞā§āύ āĻāϰāĻž | |
| git clone --depth 1 URL | āĻļā§āϧ⧠āϏāϰā§āĻŦāĻļā§āώ āĻāĻŽāĻŋāĻ āĻā§āϞā§āύ āĻāϰāĻž (shallow copy) āϏāĻŽāϝāĻŧ āĻ āϏā§āĻĒā§āϏ āĻŦāĻžāĻāĻāĻžāϤ⧠| |
| git commit | āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϤ⧠āϰā§āĻāϰā§āĻĄ āĻāϰāĻž | |
| git commit -m "Initial commit" | āĻāĻĄāĻŋāĻāϰ āύāĻž āĻā§āϞ⧠āĻŽā§āϏā§āĻāϏāĻš āĻāĻŽāĻŋāĻ āĻāϰāĻž | |
| git commit -a -m "Fix bugs" | āϏāĻŦ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ tracked āĻĢāĻžāĻāϞ stage āĻāĻŦāĻ āĻŽā§āϏā§āĻāϏāĻš āĻāĻŽāĻŋāĻ āĻāϰāĻž | |
| git commit --amend | āĻļā§āώ āĻāĻŽāĻŋāĻ āĻāĻĒāĻĄā§āĻ āĻāϰāĻž (āĻŽā§āϏā§āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻŦāĻž āĻāϰāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ) | |
| git commit --fixup abc1234 | āĻāĻāĻāĻŋ fixup āĻāĻŽāĻŋāĻ āϤā§āϰāĻŋ āĻāϰāĻž, āϝāĻž āĻĒāϰ⧠interactive rebase-āĻ squash āĻšāĻŦā§ | |
| git config | āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āĻŦāĻž āĻā§āϞā§āĻŦāĻžāϞ āĻ āĻĒāĻļāύ āϏā§āĻ/āĻĒāĻžāĻāϝāĻŧāĻž | |
| git config --global user.name "Name" | āĻā§āϞā§āĻŦāĻžāϞ Git username āϏā§āĻ āĻāϰāĻž | |
| git config --global user.email "email@example.com" | āĻā§āϞā§āĻŦāĻžāϞ Git email āϏā§āĻ āĻāϰāĻž | |
| git config --list | āϏāĻŦ Git āϏā§āĻāĻŋāĻāϏ āϤāĻžāϞāĻŋāĻāĻž (name, email, editor, āĻāϤā§āϝāĻžāĻĻāĻŋ) | |
| git diff | āĻāĻŽāĻŋāĻāĻā§āϞā§āϰ āĻŽāϧā§āϝ⧠āĻŦāĻž āĻāĻŽāĻŋāĻ āĻ working tree-āĻāϰ āĻŽāϧā§āϝ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻĻā§āĻāĻžāύ⧠| |
| git diff HEAD | āĻļā§āώ āĻāĻŽāĻŋāĻ āĻĨā§āĻā§ āĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āĻā§āύ (unstaged changes) | |
| git diff --staged | āĻĒāϰāĻŦāϰā§āϤ⧠āĻāĻŽāĻŋāĻā§ āĻā§ āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ āĻšāĻŦā§ āϤāĻž āĻĻā§āĻāĻžāύ⧠| |
| git diff --word-diff HEAD~1 | āĻļāĻŦā§āĻĻ-āϏā§āϤāϰā§āϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝ āϏāĻš āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻĻā§āĻāĻžāύ⧠| |
| git grep | āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āĻĢāĻžāĻāϞā§āϰ āĻāĻŋāϤāϰ⧠āϏāĻžāϰā§āĻ āĻāϰāĻž | |
| git grep "functionName" | āϏāĻŦ āĻĢāĻžāĻāϞ⧠ | |
| git grep -n "TODO" | 
 | |
| git grep -i "login" | 
 | |
| git init | āĻāĻāĻāĻŋ āĻāĻžāϞāĻŋ Git āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āϤā§āϰāĻŋ āĻŦāĻž āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύāĻāĻŋāĻā§ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāĻāĻ āĻāϰāĻž | |
| git init my-project | 
 | |
| git init --bare | āĻāĻāĻāĻŋ bare āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āĻāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāĻāĻ | |
| git log | āĻāĻŽāĻŋāĻ āϞāĻ āĻĻā§āĻāĻžāύ⧠| |
| git log --oneline | āĻāĻŽāĻŋāĻ āĻāϤāĻŋāĻšāĻžāϏ āĻāĻ āϞāĻžāĻāύ⧠āĻāĻŽāĻĒā§āϝāĻžāĻā§āĻāĻāĻžāĻŦā§ āĻĻā§āĻāĻžāύ⧠| |
| git log --graph --all | āϏāĻŦ āĻŦā§āϰāĻžāĻā§āĻ āĻāĻŋāĻā§āϝā§āϝāĻŧāĻžāϞ āĻā§āϰāĻžāĻĢāϏāĻš āĻĻā§āĻāĻžāύ⧠| |
| git log -p --stat | āĻāĻŽāĻŋāĻā§āϰ āĻāύā§āϝ patch āĻ āĻĢāĻžāĻāϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āϏā§āĻā§āϝāĻžāĻ āĻĻā§āĻāĻžāύ⧠| |
| git reset | āĻĢāĻžāĻāϞ unstaged āĻāϰāĻž, āĻāĻŋāύā§āϤ⧠working directory-āϤ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āϰāĻžāĻāĻž | |
| git reset HEAD file.txt | āϏā§āĻā§āĻāĻŋāĻ āĻĨā§āĻā§ āĻĢāĻžāĻāϞ āϏāϰāĻžāύ⧠(āĻāĻĄāĻŋāĻ āĻĨāĻžāĻā§) | |
| git reset --hard HEAD~1 | āĻāĻ āĻāĻŽāĻŋāĻ āĻĒāĻŋāĻāĻŋāϝāĻŧā§ āϝāĻžāĻāϝāĻŧāĻž āĻ āϏāĻŦ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻŽā§āĻā§ āĻĢā§āϞāĻž (āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϝāĻŧ!) | |
| git reset --soft HEAD~1 | āĻļā§āώ āĻāĻŽāĻŋāĻ undo āĻāϰāĻž āĻāĻŋāύā§āϤ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞ⧠āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻŽāĻŋāĻā§āϰ āĻāύā§āϝ āϰāĻžāĻāĻž | |
| git reset --mixed HEAD~1 | āĻāĻāĻāĻŋ āĻāĻŽāĻŋāĻ undo āĻāϰāĻž āĻāĻŋāύā§āϤ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ unstaged āϰāĻžāĻāĻž | |
| git show | āĻŦāĻŋāĻāĻŋāύā§āύ āϧāϰāύā§āϰ āĻ āĻŦāĻā§āĻā§āĻ āĻĻā§āĻāĻžāύ⧠| |
| git show <commit_hash> | āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻŽāĻŋāĻā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻ āĻŽā§āϏā§āĻ āĻĻā§āĻāĻžāύ⧠| |
| git show HEAD~1 | āĻŦāϰā§āϤāĻŽāĻžāύā§āϰ āĻāĻā§āϰ āĻāĻŽāĻŋāĻ āĻĻā§āĻāĻžāύ⧠| |
| git show --stat | āϏāϰā§āĻŦāĻļā§āώ āĻāĻŽāĻŋāĻā§āϰ āĻĢāĻžāĻāϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āϏāĻžāϰāĻžāĻāĻļ āĻĻā§āĻāĻžāύ⧠| |
| git status | working tree-āĻāϰ āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻĻā§āĻāĻžāύ⧠| |
| git status -s | āϏā§āĻā§āϝāĻžāĻāĻžāϏ āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āĻĢāϰāĻŽā§āϝāĻžāĻā§ āĻĻā§āĻāĻžāύ⧠| |
| git status -b | āĻŦāϰā§āϤāĻŽāĻžāύ āĻŦā§āϰāĻžāĻā§āĻ āĻ āĻĢāĻžāĻāϞ āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻĻā§āĻāĻžāύ⧠| 
đŋ āĻŦā§āϰāĻžāĻā§āĻāĻŋāĻ āĻāĻŦāĻ āĻŽāĻžāϰā§āĻāĻŋāĻ
| āĻāĻŽāĻžāύā§āĻĄ | āĻāĻĻāĻžāĻšāϰāĻŖ | āĻŦāϰā§āĻŖāύāĻž | 
|---|---|---|
| git branch | āĻŦā§āϰāĻžāĻā§āĻ āϤā§āϰāĻŋ, āϤāĻžāϞāĻŋāĻāĻž āĻŦāĻž āĻŽā§āĻā§ āĻĢā§āϞāĻž | |
| git branch new-feature | 
 | |
| git branch -d old-feature | 
 | |
| git checkout | āĻŦā§āϰāĻžāĻā§āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻŦāĻž āĻ āύā§āϝ āĻāĻŽāĻŋāĻ āĻĨā§āĻā§ āĻĢāĻžāĻāϞ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāĻž | |
| git checkout main | 
 | |
| git checkout -b new-branch | 
 | |
| git switch | āĻŦā§āϰāĻžāĻā§āĻ āϏā§āĻāĻ āĻāϰāĻž ( checkoutāĻāϰ āϏāϰāϞ āĻŦāĻŋāĻāϞā§āĻĒ) | |
| git switch main | 
 | |
| git switch -c feature-x | 
 | |
| git switch new-feature | 
 | |
| git merge | āĻ āύā§āϝ āĻŦā§āϰāĻžāĻā§āĻā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻŦāϰā§āϤāĻŽāĻžāύ āĻŦā§āϰāĻžāĻā§āĻā§ āĻŽāĻŋāϞāĻŋāϝāĻŧā§ āĻĻā§āĻāϝāĻŧāĻž | |
| git merge new-feature | 
 | |
| git merge --no-ff new-feature | fast-forward āϏāĻŽā§āĻāĻŦ āĻšāϞā§āĻ āϏāĻŦāϏāĻŽāϝāĻŧ merge commit āϤā§āϰāĻŋ | |
| git merge --abort | conflict āĻšāϞ⧠merge āĻŦāĻžāϤāĻŋāϞ āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ revert | |
| git rebase | āĻāĻŽāĻŋāĻāĻā§āϞā§āĻā§ āύāϤā§āύ base āĻāĻŽāĻŋāĻā§āϰ āĻāĻĒāϰ āϏāϰāĻžāύ⧠āĻŦāĻž āĻĒā§āύāϰāĻžāϝāĻŧ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž | |
| git rebase main | āύāĻŋāĻā§āϰ āĻŦā§āϰāĻžāĻā§āĻ āĻāĻŽāĻŋāĻāĻā§āϞā§āĻā§  | |
| git rebase -i HEAD~3 | āĻļā§āώ ā§ŠāĻāĻŋ āĻāĻŽāĻŋāĻ āĻāύā§āĻāĻžāϰâā§āϝāĻžāĻā§āĻāĻŋāĻāĻāĻžāĻŦā§ āĻāĻĄāĻŋāĻ āĻāϰāĻž | |
| git rebase --abort | āĻāϞāĻŽāĻžāύ rebase āĻĨāĻžāĻŽāĻžāύ⧠āĻ undo āĻāϰāĻž | |
| git rebase -i --autosquash HEAD~5 | interactive rebase-āĻ fixup/squash āĻāĻŽāĻŋāĻ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ squash | |
| git cherry-pick | āĻ āύā§āϝ āĻŦā§āϰāĻžāĻā§āĻ āĻĨā§āĻā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻŽāĻŋāĻ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž | |
| git cherry-pick <hash> | āĻšā§āϝāĻžāĻļ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻŽāĻŋāĻ āĻŦāϰā§āϤāĻŽāĻžāύ āĻŦā§āϰāĻžāĻā§āĻā§ āĻĒā§āϰāϝāĻŧā§āĻ | |
| git cherry-pick --continue | conflict āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻĒāϰ cherry-pick āĻāĻžāϞāĻŋāϝāĻŧā§ āϝāĻžāĻāϝāĻŧāĻž | |
| git cherry-pick A^..B | 
 | 
đĄ āϰāĻŋāĻŽā§āĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ
| āĻāĻŽāĻžāύā§āĻĄ | āĻāĻĻāĻžāĻšāϰāĻŖ | āĻŦāϰā§āĻŖāύāĻž | 
|---|---|---|
| git remote | āϰāĻŋāĻŽā§āĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϰ (āϝā§āĻŽāύ GitHub) āϞāĻŋāĻā§āĻ āĻŽā§āϝāĻžāύā§āĻ āĻāϰāĻž | |
| git remote -v | āϰāĻŋāĻŽā§āĻ āύāĻžāĻŽ āĻ URL āĻĻā§āĻāĻžāύ⧠| |
| git remote add origin URL | 
 | |
| git pull | āϰāĻŋāĻŽā§āĻ āĻŦā§āϰāĻžāĻā§āĻ āĻĨā§āĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻĄāĻžāĻāύāϞā§āĻĄ āĻ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻŽāĻžāϰā§āĻ āĻāϰāĻž | |
| git pull origin main | āϰāĻŋāĻŽā§āĻ  | |
| git pull --rebase origin main | āĻŽāĻžāϰā§āĻā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āĻĢā§āĻ āĻāϰ⧠āϰāĻŋāĻŦā§āϏ āĻāϰāĻž | |
| git push | āϞā§āĻāĻžāϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āϰāĻŋāĻŽā§āĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϤ⧠āĻāĻĒāϞā§āĻĄ āĻāϰāĻž | |
| git push origin main | āϞā§āĻāĻžāϞ  | |
| git fetch | āϰāĻŋāĻŽā§āĻ āĻĨā§āĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰāĻž āĻāĻŋāύā§āϤ⧠āĻŽāĻžāϰā§āĻ āύāĻž āĻāϰāĻž | |
| git fetch origin | āϰāĻŋāĻŽā§āĻ  | |
| git fetch origin main | āĻļā§āϧ⧠ | |
| git fetch --all | āϏāĻŦ āϰāĻŋāĻŽā§āĻ āĻĨā§āĻā§ āĻāĻĒāĻĄā§āĻ āĻĢā§āĻ āĻāϰāĻž | |
| git fetch --prune | āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻŦā§āϰāĻžāĻā§āĻāĻā§āϞ⧠āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāϰāĻž (āϞā§āĻāĻžāϞ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻŽā§āĻā§ āĻĢā§āϞāĻž) | |
| git fetch --dry-run | āĻĄāĻžāĻāύāϞā§āĻĄ āύāĻž āĻāϰ⧠āĻā§ āĻĢā§āĻ āĻšāĻŦā§ āϤāĻž āĻĻā§āĻāĻžāύ⧠| |
| git fetch origin +main | āϞā§āĻāĻžāϞ āĻā§āϰā§āϝāĻžāĻāĻŋāĻ āĻŦā§āϰāĻžāĻā§āĻ ( | 
đĻ āϏā§āĻā§āϝāĻžāĻļ āĻāĻŦāĻ āĻā§āϞāĻŋāύāĻāĻĒ
| āĻāĻŽāĻžāύā§āĻĄ | āĻāĻĻāĻžāĻšāϰāĻŖ | āĻŦāϰā§āĻŖāύāĻž | 
|---|---|---|
| git stash | āĻāĻŽāĻŋāĻ āύāĻž āĻāϰāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āϏāĻžāĻŽāϝāĻŧāĻŋāĻāĻāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŖ (work in progress) | |
| git stash | āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻ staged āĻĢāĻžāĻāϞ āϏāĻāϰāĻā§āώāĻŖ, working directory āĻļā§āώ āĻāĻŽāĻŋāĻā§ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻā§āĻāϝāĻŧāĻž | |
| git stash apply | āϏāϰā§āĻŦāĻļā§āώ stash āĻĒā§āύāϰāĻžāϝāĻŧ āĻĒā§āϰāϝāĻŧā§āĻ (stash āĻĨā§āĻā§ āϝāĻžāĻŦā§) | |
| git stash pop | āϏāϰā§āĻŦāĻļā§āώ stash āĻĒā§āϰāϝāĻŧā§āĻ āĻ āĻŽā§āĻā§ āĻĢā§āϞāĻž | |
| git stash list | āϏāĻŦ stash āϤāĻžāϞāĻŋāĻāĻž āĻĻā§āĻāĻžāύ⧠| |
| git stash branch feature-fix | āύāϤā§āύ āĻŦā§āϰāĻžāĻā§āĻ āϤā§āϰāĻŋ āĻāϰ⧠āϏāϰā§āĻŦāĻļā§āώ stash āĻĒā§āϰāϝāĻŧā§āĻ | |
| git clean | untracked āĻĢāĻžāĻāϞ āϏā§āĻĨāĻžāϝāĻŧā§āĻāĻžāĻŦā§ āĻŽā§āĻā§ āĻĢā§āϞāĻž (Git-āĻ āύā§āĻ) | |
| git clean -f | āĻŦāϰā§āϤāĻŽāĻžāύ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϰ untracked āĻĢāĻžāĻāϞ āĻŽā§āĻā§ āĻĢā§āϞāĻž | |
| git clean -fd | untracked āĻĢāĻžāĻāϞ āĻ āĻĢā§āϞā§āĻĄāĻžāϰ āĻŽā§āĻā§ āĻĢā§āϞāĻž | |
| git clean -n | āĻā§ āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻšāĻŦā§ āϤāĻž preview āĻāϰāĻž (āύāĻŋāϰāĻžāĻĒāĻĻ dry run) | 
đˇī¸ āĻā§āϝāĻžāĻ
| āĻāĻŽāĻžāύā§āĻĄ | āĻāĻĻāĻžāĻšāϰāĻŖ | āĻŦāϰā§āĻŖāύāĻž | 
|---|---|---|
| git tag | āĻāϤāĻŋāĻšāĻžāϏā§āϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĒāϝāĻŧā§āύā§āĻā§ āĻā§āϝāĻžāĻ āϤā§āϰāĻŋ, āϤāĻžāϞāĻŋāĻāĻž āĻŦāĻž āĻŽā§āĻā§ āĻĢā§āϞāĻž (āϝā§āĻŽāύ āϰāĻŋāϞāĻŋāĻ) | |
| git tag -a v1.0 -m "Version 1.0" | 
 | |
| git tag -d v1.0 | 
 | |
| git push | āϞā§āĻāĻžāϞ āĻĨā§āĻā§ āϰāĻŋāĻŽā§āĻā§ āĻāĻŽāĻŋāĻ, āĻŦā§āϰāĻžāĻā§āĻ āĻ āĻā§āϝāĻžāĻ āĻāĻĒāϞā§āĻĄ āĻāϰāĻž | |
| git push origin --tags | āϏāĻŦ āϞā§āĻāĻžāϞ āĻā§āϝāĻžāĻ āϰāĻŋāĻŽā§āĻā§ push āĻāϰāĻž (āĻāĻāĻžāϧāĻŋāĻ āĻāĻžāϰā§āϏāύ āĻā§āϝāĻžāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻāĻĒāϝā§āĻā§) | |
| git push origin v1.0 | āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻā§āϝāĻžāĻ (āϝā§āĻŽāύ  | |
| git push origin :refs/tags/v1.0 | āϰāĻŋāĻŽā§āĻ āĻā§āϝāĻžāĻ  | 
đ ī¸ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϰā§āĻāϞā§āϝā§āĻļāύ
| āĻāĻŽāĻžāύā§āĻĄ | āĻāĻĻāĻžāĻšāϰāĻŖ | āĻŦāϰā§āĻŖāύāĻž | 
|---|---|---|
| git mergetool | merge conflict āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ āĻāĻŋāĻā§āϝā§āϝāĻŧāĻžāϞ āĻā§āϞ āĻā§āϞāĻž | |
| git mergetool --tool=meld | Meld-āĻāϰ āĻŽāϤ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻā§āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠conflict āĻ āĻŋāĻ āĻāϰāĻž | |
| git rerere | āĻāĻā§ āĻāĻŋāĻāĻžāĻŦā§ conflict āϏāĻŽāĻžāϧāĻžāύ āĻāϰā§āĻā§āύ Git āϤāĻž āĻŽāύ⧠āϰāĻžāĻā§ | |
| git config --global rerere.enabled true | āĻāĻā§āϰ āϏāĻŽāĻžāϧāĻžāύ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻĒā§āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϏāĻā§āϰāĻŋāϝāĻŧ āĻāϰāĻž | |
| git rerere status | āĻā§āύ āĻĢāĻžāĻāϞā§āϰ conflict resolution āϏāĻāϰāĻā§āώāĻŋāϤ āĻāĻā§ āϤāĻž āĻĻā§āĻāĻžāύ⧠| |
| 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 | āĻļā§āϧ⧠⧧ā§Ļâ⧍ā§Ļ āϞāĻžāĻāύā§āϰ blame āϤāĻĨā§āϝ āĻĻā§āĻāĻžāύ⧠| |
| git blame --show-email file.txt | āϞāĻžāĻāύā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āϏāĻžāĻĨā§ āϞā§āĻāĻā§āϰ āĻāĻŽā§āĻāϞāĻ āĻĻā§āĻāĻžāύ⧠| |
| git reflog | āĻŦā§āϰāĻžāĻā§āĻ āĻŽā§āĻāĻŽā§āύā§āĻ āĻ HEAD-āĻāϰ āϰā§āĻĢāĻžāϰā§āύā§āϏ āϞāĻ (reflog) āĻĻā§āĻāĻž āĻ āĻŽā§āϝāĻžāύā§āĻ āĻāϰāĻž | |
| git reflog show main@{1.week.ago} | 
 | |
| git reflog expire --expire=30.days --dry-run | ā§Šā§Ļ āĻĻāĻŋāύā§āϰ āĻŦā§āĻļāĻŋ āĻĒā§āϰāĻžāύ⧠āĻā§āύ reflog āĻāύā§āĻā§āϰāĻŋ clean āĻšāĻŦā§ āϤāĻž preview āĻāϰāĻž | |
| git reflog delete HEAD@{2} | āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ reflog āĻāύā§āĻā§āϰāĻŋ āĻŽā§āĻā§ āĻĢā§āϞāĻž (āϏāϤāϰā§āĻāϤāĻžāϰ āϏāĻžāĻĨā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ) | |
| git submodule | āϏāĻžāĻŦāĻŽāĻĄāĻŋāĻāϞ (āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϰ āĻāĻŋāϤāϰ⧠āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ) āϝā§āĻ, āĻāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāĻāĻ, āĻāĻĒāĻĄā§āĻ āĻŦāĻž āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āĻāϰāĻž | |
| git submodule add URL path | āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ path-āĻ āĻŦāĻžāĻšā§āϝāĻŋāĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āϏāĻžāĻŦāĻŽāĻĄāĻŋāĻāϞ āĻšāĻŋāϏā§āĻŦā§ āϝā§āĻ āĻāϰāĻž | |
| git submodule update --init | āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϰ āϏāĻŦ āϏāĻžāĻŦāĻŽāĻĄāĻŋāĻāϞ āĻāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāĻāĻ āĻ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰāĻž | |
| git submodule foreach git pull | āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāĻŦāĻŽāĻĄāĻŋāĻāϞ⧠ | |
| git submodule sync --recursive | 
 | |
| git submodule update --remote --merge | āϏāĻžāĻŦāĻŽāĻĄāĻŋāĻāϞāĻā§āϞā§āĻā§ āϤāĻžāĻĻā§āϰ āϰāĻŋāĻŽā§āĻ āĻŦā§āϰāĻžāĻā§āĻā§āϰ āϏāϰā§āĻŦāĻļā§āώ āĻāĻŽāĻŋāĻā§ āĻāĻĒāĻĄā§āĻ āĻāϰāĻž | |
| git archive | āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻŽāĻŋāĻ āĻŦāĻž āĻŦā§āϰāĻžāĻā§āĻ āĻĨā§āĻā§ āĻĢāĻžāĻāϞ āĻāϰā§āĻāĻžāĻāĻ (zip, tar āĻāϤā§āϝāĻžāĻĻāĻŋ) āϤā§āϰāĻŋ | |
| git archive --format=zip HEAD > archive.zip | HEAD āĻĨā§āĻā§ āĻŦāϰā§āϤāĻŽāĻžāύ āĻĒā§āϰāĻā§āĻā§āĻ āĻĢāĻžāĻāϞā§āϰ ZIP āĻāϰā§āĻāĻžāĻāĻ āϤā§āϰāĻŋ | |
| git archive -o release.tar.gz HEAD | HEAD āĻĨā§āĻā§  | |
| git archive --format=tar --prefix=project/ HEAD \| gzip > project.tar.gz | 
 | |
| git gc | āĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻĢāĻžāĻāϞ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāϰāĻž | |
| git gc --aggressive | āĻāĻā§āϰ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ (āϧā§āϰ āĻšāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŋāύā§āϤ⧠āĻāĻžāϰā§āϝāĻāϰ) | |
| git gc --prune=now | āϏāĻŦ unreachable āĻ āĻŦāĻā§āĻā§āĻ āĻ āĻŦāĻŋāϞāĻŽā§āĻŦā§ āĻŽā§āĻā§ āĻĢā§āϞāĻž (āϏāϤāϰā§āĻāϤāĻž!) | |
| git shortlog | āϞā§āĻāĻ āĻ āϤāĻžāĻĻā§āϰ āĻāĻŽāĻŋāĻā§āϰ āĻĻā§āϰā§āϤ āϏāĻžāϰāϏāĻāĻā§āώā§āĻĒ | |
| git shortlog -e | āϞā§āĻāĻā§āϰ āϤāĻžāϞāĻŋāĻāĻž āĻāĻŽā§āĻāϞāϏāĻš āĻĻā§āĻāĻžāύ⧠(āĻā§ āĻāϤ āĻ āĻŦāĻĻāĻžāύ āϰā§āĻā§āĻā§ āĻŦāĻŋāĻļā§āϞā§āώāĻŖā§āϰ āĻāύā§āϝ) | |
| git shortlog -s -n | āϞā§āĻāĻ āĻāϤ āĻāĻŽāĻŋāĻ āĻāϰā§āĻā§āύ āϤāĻž āϏāĻāĻā§āϝāĻž āĻ āύā§āϏāĻžāϰ⧠āϏāĻžāĻāĻžāύ⧠| |
| git shortlog -sne | āύāĻžāĻŽ āĻ āĻāĻŽā§āĻāϞāϏāĻš āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāĻžāϰā§āϝāĻāϞāĻžāĻĒ āĻā§āϰā§āϝāĻžāĻāĻŋāĻ | |
| git revert | āĻāĻāĻāĻŋ āύāϤā§āύ āĻāĻŽāĻŋāĻ āϤā§āϰāĻŋ āĻāϰ⧠āĻĒā§āϰā§āĻŦā§āϰ āĻāĻŽāĻŋāĻā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻĒā§āϰā§āĻŦāĻžāĻŦāϏā§āĻĨāĻžāϝāĻŧ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻā§āĻāϝāĻŧāĻž (āĻāϤāĻŋāĻšāĻžāϏ āύāĻž āĻŦāĻĻāϞāĻŋāϝāĻŧā§) | |
| git revert HEAD | āĻļā§āώ āĻāĻŽāĻŋāĻ undo āĻāϰāĻž āĻāĻāĻāĻŋ āύāϤā§āύ āĻāĻŽāĻŋāĻ āϤā§āϰāĻŋ āĻāϰ⧠| |
| git revert <commit_hash> | āĻšā§āϝāĻžāĻļ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻŽāĻŋāĻ undo āĻāϰāĻž āĻāĻāĻāĻŋ āύāϤā§āύ āĻāĻŽāĻŋāĻ āϤā§āϰāĻŋ āĻāϰ⧠| 
đ GitHub CLI
ghāĻāĻĒāύāĻžāĻā§ āĻāĻžāϰā§āĻŽāĻŋāύāĻžāϞ āĻĨā§āĻā§ GitHub āĻŽā§āϝāĻžāύā§āĻ āĻāϰāϤ⧠āĻĻā§āϝāĻŧāĨ¤
| āĻāĻŽāĻžāύā§āĻĄ | āĻāĻĻāĻžāĻšāϰāĻŖ | āĻŦāϰā§āĻŖāύāĻž | 
|---|---|---|
| gh auth login | āĻāĻāĻāĻŋ GitHub āĻšā§āϏā§āĻā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύ āϝāĻžāϤ⧠CLI āĻāĻŽāĻžāύā§āĻĄ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠| |
| gh auth login --with-token < mytoken.txt | āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ⧠( | |
| gh auth login --hostname enterprise.internal | GitHub Enterprise āϏāĻžāϰā§āĻāĻžāϰ⧠āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ (github.com āύāϝāĻŧ) | |
| gh repo clone | āĻāĻāĻāĻŋ GitHub āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āĻāĻĒāύāĻžāϰ āϞā§āĻāĻžāϞ āĻŽā§āĻļāĻŋāύ⧠āĻā§āϞā§āύ āĻāϰāĻž | |
| gh repo clone user/repo | 
 | |
| gh repo clone cli/cli -- --depth=1 | āĻļā§āϧ⧠āϏāϰā§āĻŦāĻļā§āώ āĻāĻŽāĻŋāĻ āĻā§āϞā§āύ āĻāϰāĻž āĻĻā§āϰā§āϤ āĻ āĻā§āĻ āĻā§āϞā§āύā§āϰ āĻāύā§āϝ | |
| gh repo clone cli/cli workspace/cli | āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ  | |
| gh issue list | āĻāĻāĻāĻŋ GitHub āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϰ issues āϤāĻžāϞāĻŋāĻāĻž, āĻĒā§āϰāϝāĻŧā§āĻāύ⧠āĻŦāĻŋāĻāĻŋāύā§āύ āĻā§āϰāĻžāĻāĻā§āϰāĻŋāϝāĻŧāĻž āĻĻā§āĻŦāĻžāϰāĻž āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰāĻž | |
| gh issue list --assignee "@me" | āĻāĻĒāύāĻžāϰ āĻāύā§āϝ assigned issues āϤāĻžāϞāĻŋāĻāĻž | |
| gh issue list --state all | āϏā§āĻā§āĻ āύāĻŋāϰā§āĻŦāĻŋāĻļā§āώ⧠(open āĻŦāĻž closed) issues āϤāĻžāϞāĻŋāĻāĻž | |
| gh issue list --search "error no:assignee sort:created-asc" | âerrorâ āĻŽā§āϞāĻžāύ⧠issues āϤāĻžāϞāĻŋāĻāĻž, unassigned, creation date āĻ āύā§āϝāĻžāϝāĻŧā§ ascending | |
| gh pr create | CLI āĻĻāĻŋāϝāĻŧā§ GitHub-āĻ pull request āϤā§āϰāĻŋ āĻāϰāĻž | |
| gh pr create --title "..." | āĻĒā§āϰāĻĻāϤā§āϤ āĻļāĻŋāϰā§āύāĻžāĻŽ āϏāĻš pull request āϤā§āϰāĻŋ | |
| gh pr create --project "Roadmap" | pull request-āĻā§ âRoadmapâ āύāĻžāĻŽā§ GitHub āĻĒā§āϰāĻā§āĻā§āĻā§āϰ āϏāĻžāĻĨā§ āϞāĻŋāĻā§āĻ āĻāϰāĻž | |
| gh pr create --base develop --head monalisa:feature | fork  | |
| gh repo create | CLI āĻĨā§āĻā§ āύāϤā§āύ GitHub āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āϤā§āϰāĻŋ āĻāϰāĻž | |
| gh repo create my-project | 
 | |
| gh repo create my-project --public --clone | āĻāĻāĻāĻŋ public āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āϤā§āϰāĻŋ āĻ āϞā§āĻāĻžāϞāĻŋ āĻā§āϞā§āύ āĻāϰāĻž | |
| gh repo create my-project --private --source=. --remote=upstream | āĻŦāϰā§āϤāĻŽāĻžāύ āĻĢā§āϞā§āĻĄāĻžāϰ āĻĨā§āĻā§ āĻāĻāĻāĻŋ private āϰāĻŋāĻŽā§āĻ repo āϤā§āϰāĻŋ āĻāĻŦāĻ  | 
đĄ 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 | āĻĒā§āϰ⧠āĻāϤāĻŋāĻšāĻžāϏ⧠āĻāĻāϏāĻžāĻĨā§ string āĻŦāĻž pattern āϰāĻŋāĻĒā§āϞā§āϏ āĻāϰāĻž (āϝā§āĻŽāύ āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāϰāĻž) | |
| git filter-repo --subdirectory-filter src | āĻāĻāĻāĻŋ āϏāĻžāĻŦāĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϰ āĻāϤāĻŋāĻšāĻžāϏ āύāϤā§āύ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϤ⧠āĻāĻā§āϏāĻā§āϰā§āϝāĻžāĻā§āĻ āĻāϰāĻž, āĻāĻŽāĻŋāĻ āĻŽā§āĻāĻžāĻĄāĻžāĻāĻž āĻŦāĻāĻžāϝāĻŧ āϰā§āĻā§ | |
| git worktree | āĻāĻāĻāĻŋ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻāĻžāϧāĻŋāĻ working āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ āĻŽā§āϝāĻžāύā§āĻ āĻāϰāĻž, āĻā§āϞā§āύ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻžāϧāĻŋāĻ āĻŦā§āϰāĻžāĻā§āĻā§ āĻāĻāϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻž | |
| git worktree add ../feature feature-branch | āĻāĻāĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϤ⧠āĻ āϤāĻŋāϰāĻŋāĻā§āϤ working tree āϤā§āϰāĻŋ āĻāϰāĻž, parallel branch checkout āϏāĻŽā§āĻāĻŦ āĻāϰāϤ⧠| |
| git worktree list | āϏāĻŦ active worktree, āϤāĻžāĻĻā§āϰ path āĻ āĻŦā§āϰāĻžāĻā§āĻ āϤāĻžāϞāĻŋāĻāĻž āĻĻā§āĻāĻžāύ⧠| |
| git worktree remove ../feature | āĻĒā§āϰāϝāĻŧā§āĻāύ āύāĻž āĻšāϞ⧠āĻāĻāĻāĻŋ linked worktree āϏāϰāĻŋāϝāĻŧā§ āĻĢā§āϞāĻž | |
| git replace | āĻ āϏā§āĻĨāĻžāϝāĻŧā§ āϰā§āĻĢāĻžāϰā§āύā§āϏ āϤā§āϰāĻŋ āĻāϰ⧠āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻ āĻŦāĻā§āĻā§āĻ āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž, āĻāϤāĻŋāĻšāĻžāϏ āĻŽā§āϝāĻžāύāĻŋāĻĒā§āϞā§āĻļāύ/āĻā§āϏā§āĻāĻŋāĻ non-destructive āĻāĻžāĻŦā§ āĻāϰāĻž | |
| git replace <old_commit> <new_commit> | āϞā§āĻāĻžāϞ repo-āϤ⧠āĻāĻāĻāĻŋ āĻāĻŽāĻŋāĻ āĻ āύā§āϝāĻāĻŋāϰ āϏāĻžāĻĨā§ swap āĻāϰāĻž āĻā§āϏā§āĻāĻŋāĻ āĻŦāĻž āĻĒā§āϝāĻžāĻāĻŋāĻāϝāĻŧā§āϰ āĻāύā§āϝ | |
| git replace --list | āϏāĻŦ active replacement refs āĻĻā§āĻāĻžāύ⧠| |
| git replace -d <replace_ref> | āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ replacement ref āĻŽā§āĻā§ āĻĢā§āϞāĻž | |
| git stash | āĻ āϏāĻŽāĻžāĻĒā§āϤ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ stack-āĻ āϏāĻžāĻŽāϝāĻŧāĻŋāĻāĻāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž, āĻāĻŽāĻŋāĻ āύāĻž āĻāϰ⧠context switch āϏāĻŽā§āĻāĻŦ āĻāϰāĻž | |
| git stash push -p | āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻ āĻāĻļ stash āĻāϰāĻžāϰ āĻāύā§āϝ āĻāύā§āĻāĻžāϰâā§āϝāĻžāĻā§āĻāĻŋāĻ āϏāĻŋāϞā§āĻāĻļāύ | |
| git stash push -m "WIP selective stash" | āϏāĻšāĻ āĻļāύāĻžāĻā§āϤāĻāϰāĻŖā§āϰ āĻāύā§āϝ āĻāĻžāϏā§āĻāĻŽ āĻŽā§āϏā§āĻ āϏāĻš stash āϤā§āϰāĻŋ | |
| git stash apply stash@{2} | stash āϤāĻžāϞāĻŋāĻāĻž āĻĨā§āĻā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ stash āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž (āĻĄā§āϰāĻĒ āύāĻž āĻāϰā§) | |
| git rebase | āύāϤā§āύ base-āĻāϰ āĻāĻĒāϰ āĻāĻŽāĻŋāĻ āĻĒā§āύāĻāĻĒā§āϰāϝāĻŧā§āĻ, āĻĒā§āϰāĻāϞā§āĻĒ āĻāϤāĻŋāĻšāĻžāϏ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻ linear āϰāĻžāĻāĻžāϰ āĻāύā§āϝ āĻāĻŦāĻ interactive āĻāĻĄāĻŋāĻā§āϰ āĻāύā§āϝ | |
| git rebase --interactive --autosquash | interactive rebase āĻļā§āϰ⧠āϝāĻž fixup āĻŦāĻž squash āĻŽāĻžāϰā§āĻ āĻāϰāĻž āĻāĻŽāĻŋāĻ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ squash āĻāϰāĻŦā§ | |
| git rebase -i --autosquash HEAD~10 | fixup/squash āĻŽāĻžāϰā§āĻ āĻāϰāĻž āĻāĻŽāĻŋāĻāĻā§āϞ⧠āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ squash āĻāϰāĻž push-āĻāϰ āĻāĻā§ āĻāϤāĻŋāĻšāĻžāϏ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āϰāĻžāĻāϤ⧠| |
| git commit --fixup <commit> | āĻāĻāĻāĻŋ fixup āĻāĻŽāĻŋāĻ āϤā§āϰāĻŋ āĻāϰāĻž āϝāĻž rebase-āĻ autosquash āĻšāĻŦā§ | |
| git commit --squash <commit> | āĻāĻāĻāĻŋ squash āĻāĻŽāĻŋāĻ āϤā§āϰāĻŋ āĻāϰāĻž āϝāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻŽāĻŋāĻā§āϰ āϏāĻžāĻĨā§ āĻāĻāϤā§āϰāĻŋāϤ āĻšāĻŦā§ | |
| git bisect | Binary search āĻā§āϞ āϝāĻž āĻĻā§āϰā§āϤ āĻŦāĻžāĻ āĻāϏāĻž āĻāĻŽāĻŋāĻ āĻļāύāĻžāĻā§āϤ āĻāϰ⧠āĻĒāϰāĻĒāϰ āĻāĻŽāĻŋāĻ āĻā§āϏā§āĻ āĻāϰ⧠| |
| git bisect run | āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻŽāĻŋāĻā§ āĻā§āϏā§āĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻžāϞāĻŋāϝāĻŧā§ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻŦāĻžāĻ āĻāύāĻž āĻāĻŽāĻŋāĻ āĻļāύāĻžāĻā§āϤ āĻāϰāĻž | |
| git bisect start; git bisect bad; git bisect good v1.0; git bisect run ./test.sh | āĻā§āϏā§āĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠bisect āĻ āĻā§āĻŽā§āĻ āĻāϰāĻž, āĻŦāĻžāĻ āĻļāύāĻžāĻā§āϤāĻāϰāĻŖ āĻĻā§āϰā§āϤ āĻāϰāĻž | |
| git bisect visualize | bisect āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāĻŋāĻā§āϝā§āϝāĻŧāĻžāϞāĻžāĻāĻ āĻāϰāϤ⧠āĻāĻāĻāĻŋ āĻā§āϰāĻžāĻĢāĻŋāĻā§āϝāĻžāϞ āĻā§āϞ āĻā§āϞāĻž | |
| git bisect reset | bisect āĻŽā§āĻĄ āĻĨā§āĻā§ āĻŦā§āϰ āĻšāϝāĻŧā§ āĻāϏāϞ HEAD-āĻ āĻĢā§āϰāĻž | |
| git commit | āĻāĻŽāĻŋāĻ āϰā§āĻāϰā§āĻĄ āĻāϰāĻž āĻāύā§āύāϤ āĻ āĻĒāĻļāύ āϏāĻš: amend, sign, fixup āĻ message āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻā§āĻļāύ āĻāĻā§āĻāĻŽāĻžāύā§āϰ āĻāϤāĻŋāĻšāĻžāϏ āĻŦāĻāĻžāϝāĻŧ āϰāĻžāĻāϤ⧠| |
| 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 āĻĨā§āĻā§ āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āϏā§āĻā§āĻā§ āĻŦāϰā§āϤāĻŽāĻžāύ āĻŦā§āϰāĻžāĻā§āĻ reset āĻāϰ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāĻž | |
| git reflog expire --expire=now --all | āϏāĻŦ reflog āĻāύā§āĻā§āϰāĻŋ āĻ āĻŦāĻŋāϞāĻŽā§āĻŦā§ āĻŽā§āϝāĻŧāĻžāĻĻā§āϤā§āϤā§āϰā§āĻŖ āĻāϰāĻž (āϏāϤāϰā§āĻāϤāĻžāϰ āϏāĻžāĻĨā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ) | 
đ§° āĻĒā§āĻļāĻžāĻĻāĻžāϰ Workflow āĻāĻŋāĻĒāϏ āĻāĻŦāĻ āĻ āĻā§āĻŽā§āĻļāύ
| āĻŦāĻŋāώāϝāĻŧ | āĻāĻŽāĻžāύā§āĻĄ / āĻāĻĻāĻžāĻšāϰāĻŖ | āĻŦā§āϝāĻžāĻā§āϝāĻž āĻ āĻĒā§āϰ⧠āĻāĻŋāĻĒāϏ | 
|---|---|---|
| āĻāĻā§āϰāĻžāϏ⧠āϰāĻŋāĻĒā§ āĻā§āϞāĻŋāύāĻāĻĒ | git gc --aggressive --prune=now | āĻāĻā§āϰ garbage collection āĻāϰ⧠āĻ unreachable āĻ āĻŦāĻā§āĻā§āĻ āϤā§āĻā§āώāĻŖāĻžā§ prune āĻāϰ⧠āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāύāĨ¤ āĻŽā§āĻāύā§āĻā§āύā§āϝāĻžāύā§āϏ āϏāĻŽāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ | 
| Parallel āĻŦā§āϰāĻžāĻā§āĻ Worktrees | git worktree add ../feature-branch feature | āĻāĻāϏāĻžāĻĨā§ āĻāĻāĻžāϧāĻŋāĻ āĻĢāĻŋāĻāĻžāϰ⧠āĻāĻžāĻā§āϰ āĻāύā§āϝ āĻāĻāĻžāϧāĻŋāĻ working tree āϰāĻžāĻāĻž, clone overhead āĻāĻĄāĻŧāĻžāϤ⧠| 
| āĻĒāϰāĻŋāώā§āĻāĻžāϰ, Linear āĻāϤāĻŋāĻšāĻžāϏ | git rebase -i --autosquash | push āĻāϰāĻžāϰ āĻāĻā§ interactive rebase + autosquash āĻāϰ⧠āĻāϤāĻŋāĻšāĻžāϏ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻ āĻĒāĻžāĻ āϝā§āĻā§āϝ āϰāĻžāĻā§āύ | 
| āύāĻŋāϰāĻžāĻĒāĻĻ āĻāĻŽāĻŋāĻ | git commit -S | GPG āĻĻāĻŋāϝāĻŧā§ āĻāĻŽāĻŋāĻ āϏā§āĻŦāĻžāĻā§āώāϰ āĻāϰ⧠āĻļā§āϝāĻŧāĻžāϰā§āĻĄ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϤ⧠āĻŦāĻŋāĻļā§āĻŦāĻžāϏāϝā§āĻā§āϝāϤāĻž āĻŦāĻžāĻĄāĻŧāĻžāύ; āĻ āύā§āĻ enterprise āĻĒāϰāĻŋāĻŦā§āĻļā§ āĻŦāĻžāϧā§āϝāϤāĻžāĻŽā§āϞāĻ | 
| āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ Bisect | git bisect run ./test-script.sh | bisect āĻāϞāĻžāĻāĻžāϞ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻŽāĻŋāĻā§ āĻā§āϏā§āĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻžāϞāĻŋāϝāĻŧā§ āĻŦāĻžāĻ āĻļāĻŋāĻāĻžāϰ āĻ āĻā§āĻŽā§āĻ āĻāϰāĻž | 
| āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϰā§āĻāϞā§āϝā§āĻļāύ āĻā§āϝāĻžāĻļ | git config --global rerere.enabled true | āĻāĻā§āϰ āϏāĻŽāĻžāϧāĻžāύ āĻĒā§āύāϰā§āĻŦā§āϝāĻŦāĻšāĻžāϰ āϏāĻā§āϰāĻŋāϝāĻŧ āĻāϰā§āύ āϝāĻžāϤ⧠rebase āĻŦāĻž merge-āĻ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤ conflict āĻĻā§āϰā§āϤ āϏāĻŽāĻžāϧāĻžāύ āĻšāϝāĻŧ | 
| āĻļā§āϝāĻŧāĻžāϰā§āĻĄ āĻāϞāĻŋāϝāĻŧāĻžāϏ āĻ āĻšā§āĻāϏ | āϏāĻžāϧāĻžāϰāĻŖ Git āĻāϞāĻŋāϝāĻŧāĻžāϏ āĻ āĻāĻŽāĻŋāĻ āĻšā§āĻāĻā§āϞ⧠āĻļā§āϝāĻŧāĻžāϰā§āĻĄ repo āĻŦāĻž CI pipeline-āĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻāĻŋāĻŽ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āĻŦāĻāĻžāϝāĻŧ āϰāĻžāĻāϤ⧠| 
āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āϰāĻŋāϏā§āϰā§āϏ
đ§ āĻāĻŋāĻĒ
āϏāĻŦāĻāĻŋāĻā§ āĻŽā§āĻāϏā§āĻĨ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻŦā§āύ āύāĻžāĨ¤ --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