đ 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