π This is a repository that summarizes the Git commands and tips that you should at least know about development.
Git μ μ¬μ©νλ©΄μ μμ£Ό μ¬μ©νλ λͺ λ Ήμ΄λ€μ λν΄ μ 리ν repository μ λλ€.
git add [file name]
git add .
git commit -m "[commit message]"
git commit -am "[commit message]"
git remote add [remote github repository address]
git push origin [branch name]
git checkout [branch name]
git checkout -b [branch name]
git branch -M [changed name]
git diff
git log
git log --graph
git checkout -- [file name]
git reset HEAD^
or
git revert HEAD
git commit --amend
git remote add --track master upstream [remote github repository address]
git pull --ff upstream master
git rebase -i HEAD~[commit κ°μ]
.gitconfig
μμ μ€μ ν΄λ editor μ°½μ΄ λνλλ€. κΈ°μ€μ΄ λ 맨 μμ ν commit λ§ pick
μΌλ‘ λκ³ λλ¨Έμ§λ squash
λΌλ λͺ
λ Ήμ΄λ‘ λ°κΏμ€λ€. :wq
λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ μ μ₯νκ³ μ’
λ£νλ€. κ·Έλ¬λ©΄ λ λ€λ₯Έ editor μ°½μ΄ λνλλλ°, commit message λ₯Ό μ€μ νλ editor μ΄λ€. μνλ commit message λ₯Ό μ
λ ₯νκ³ :wq
λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ μ μ₯νκ³ μ’
λ£ν΄μ£Όλ©΄ squash κ° λλ€.
git reflog
git commit -C HEAD --amend
cf> λ§μ½ push λ₯Ό ν μνλΌλ©΄ -f
μ΅μ
μ ν΅ν΄μ push λ₯Ό ν΄μ€μΌ νλ€. commit μ μλ‘ μμ±νμ§ μκ³ λ³κ²½μ¬νμ μΆκ°νλ κ²μ²λΌ 보μ΄μ§λ§ λ΄λΆμ μΌλ‘λ μλ‘μ΄ μ»€λ°μ΄ μκΈ°λ κ²μ΄κΈ° λλ¬Έμ push λ commit κ³Ό λ€λ₯Έ commit μ΄λ€.
git update-index --assume-unchanged [νμΌλͺ
]
git update-index --no-assume-unchanged [νμΌλͺ
]
git stash
git stash pop
git cherry-pick [COMMIT_HASH_NUMBER]
git branch --unset-upstream
μ¬λ¬ κ°μ§ λ°©λ²μ΄ μμ§λ§ κ·Έ μ€ λ κ°μ§.
git merge upstream/master
(resolve conflict in editor)
git add src
git commit
git rebase upstream/master
(resolve conflict in editor again)
git add src
git rebase --continue
git push -f upstream YOUR_BRANCH_NAME
or
git fetch upstream
git rebase upstream/master
(resolve conflict)
git add .
git rebase --continue
git push -f origin [YOUR_WORKING_BRANCH_NAME]
μ΄λ€ commit μ΄ μ΄λ―Έ μ¬λΌκ°λλ° κ·Έ commit μ ν΄λΉνλ μμ μ¬νμ΄ λ°μνλ©΄ κ·Έμ ν΄λΉνλ fix commit μ μΆκ°ν κ²½μ°κ° μλ€. μ΄ λ, commit μ μμκ° λμ‘ν΄μ§λλ° μ΄ κ²½μ°,fixup
κ³Ό autosquash
command λ₯Ό μ¬μ©νλ€.
git commit --fixup [HASH]
μ΄λ κ² ν΄μ ν΄λΉ fix commit μ μΆκ°ν΄λμ λ€μμ
git rebase -i --autosquash [HASH]
μ λͺ
λ Ήμ΄λ₯Ό ν΅ν΄μ squash ν΄μ£Όλ©΄ μ»€λ° μμλ μ λ ¬λλ©΄μ νλμ commit μΌλ‘ squash λλ€. μ λͺ
λ Ήμ΄μμ HASH
λ μ΄λ 컀λ°λΆν° squash λ₯Ό ν κ²μΈκ°λ₯Ό μλ―Ένλ€.
cf> fixup κ³Ό squash κ·Έλ¦¬κ³ squeeze μ μ°¨μ΄μ
squash
λ μλ‘μ΄ μΈν°νμ΄μ€κ° μ΄λ¦¬λ©΄μ commit message λ μμ (ν¬ν¨ λλ λ°°μ )ν μ μλ€. fixup
μ commit message λ₯Ό pick
ν commit μ λν΄μλ§ μ μ©νλ€. squeeze
λ squash νκ³ μ νλ λͺ¨λ commit message λ₯Ό ν¬ν¨νλ©΄μ squash νλ€.
Git
μ μ€μΉν λλ ν 리μλ .gitconfig
νμΌμ΄ μ‘΄μ¬νλ€. μ΄ νμΌμμ μμ£Ό μ¬μ©νλ λͺ
λ Ήμ΄μ λν΄μ alias λ₯Ό μ§μ ν΄μ€ μ μλ€.
[alias]
g = git
st = status
co = checkout
ad = add
cm = commit -m
acm = commit -am
ph = push
rb = rebase -i
fh = fetch
df = diff
br = branch -a
lg = log --graph --abbrev-commit --decorate --format=format:'%C(cyan)%h%C(reset) - %C(green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(yellow)%d% C(reset)' --all
re = reset HEAD\\^
fu = fetch upstream
rum = rebase upstream/master
pom = push origin master
list = config --get-regexp alias
readme = !git add . && git commit -m "Update README.md" && git push origin master
docs = !git add . && git commit -m "Update" && git push origin master
update = !git fetch upstream && git rebase upstream/master && git push origin master
Add
: μλ‘μ΄ κΈ°λ₯ λλ api μΆκ°
Remove
: μ κ±°
Enhance
: κΈ°λ₯ λλ μ±λ₯μ ν₯μ
Fix
: λ²κ·Έ, μ€ν, μ€νμΌμ μμ
Upgrade
: λΌμ΄λΈλ¬λ¦¬ λ²μ μ
κ·Έλ μ΄λ
Document
: λ¬ΈμνRefactor
: 리ν©ν λ§Update
: λ€λ₯Έ μ£Όλ³ μν©μ λ§μΆμ΄μ κ°±μ
Polish
: μ‘λ€ν μμ λ¬Άμ (λ€λ₯Έ μ μ ν λ¬Έκ΅¬κ° μμ κ²½μ° μ¬μ©)