git
Git
Git์ ํํ์ด์ง์ ๋ฐ๋ฅด๋ฉด ์๊ท๋ชจ ํ๋ก์ ํธ๋ถํฐ ๋๊ท๋ชจ ํ๋ก์ ํธ๊น์ง ๋ชจ๋  ๊ฒ์ ๋น ๋ฅด๊ณ  ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋ ๋ฌด๋ฃ ์คํ ์์ค ๋ถ์ฐ ๋ฒ์  ์ ์ด ์์คํ
์ด๋ผ๊ณ  ์ค๋ช
๋์ด ์๋ค.
Github, GitLab, bitbucket
๋ํ์ ์ธ Git์ ์ฅ์๋ก Git์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ๋ฅผ ์ง์ํ๋ ์นํธ์คํ ์๋น์ค์ด๋ค.
Git ๋ช
๋ น์ด
์ค์ /์ด๊ธฐํ
- config - ์ฌ์ฉ์๋ช ๊ตฌ์ฑ : git config (--global) user.name "name" 
- ์ด๋ฉ์ผ ์ค์  : git config (--global) user.email "email" 
- ์ค์  ์ ๋ณด ์กฐํ : git config (--global) --list 
- ํฐ๋ฏธ๋์ ํ์๋๋ ๋ฉ์์ง์ ์นผ๋ผ๋ฅผ ํ์ํด์ค : git config --global color.ui โautoโ 
- alias ๋ฑ๋ก : git config --global alias. - ๋ณ์นญ'!์ ์ฉํ ๋ช ๋ น์ด'
 
- remote - ์๊ฒฉ ์ ์ฅ์ ์ถ๊ฐ : git remote add <remote ๋ณ์นญ> <์ ์ฅ์ url> - ์๊ฒฉ ์ ์ฅ์ ๋ณ๊ฒฝ : git remote set-url <remote ๋ณ์นญ> <์ ์ฅ์ url> 
- ์๊ฒฉ ์ ์ฅ์ ๋ณ์นญ ๋ด์ญ ํ์ธ : git remote -v 
- ์๊ฒฉ ์ ์ฅ์ ๋ณ์นญ ์ ๊ฑฐ : git remote rm ์๊ฒฉ์ ์ฅ์ ๋ณ์นญ 
 
 
๊ธฐ๋ณธ ๋ช
๋ น์ด
- ์๋ก์ด ํ์ผ ์ถ๊ฐ : git add <ํ์ผ๋ช ๋ค์ด๋ '.'> 
- commit - addํ ํ์ผ์ ๋ํด commit ๋ฉ์์ง ์ถ๊ฐ : git commit -m "๋ฉ์์ง" 
- ๋ชจ๋ ๋ณ๊ฒฝ๋ ํ์ผ์ ๋ํด commit ๋ฉ์์ง ์ถ๊ฐ : git commit -am "๋ฉ์์ง" 
- ๋ง์ง๋ง ์ปค๋ฐ ๊ณ ์น๊ธฐ : git commit -m "๋ฉ์์ง" --amend 
 
- push : ๋ก์ปฌ ์ ์ฅ์์ commit๋ ํ์ผ์ ์๊ฒฉ์ ์ฅ์์ ๋ฐ์ํ๊ธฐ git push <remote ๋ณ์นญ> < - branch>
- pull : ์๊ฒฉ์ ์ฅ์์์ ๋ก์ปฌ ์ ์ฅ์๋ก ๊ฐ์ ธ์ค๊ธฐ git pull <remote ๋ณ์นญ> < - branch>- pull์ fetch์ merge๊ฐ ํฉ์ณ์ง ๋ช ๋ น์ด 
- fetch : ์๊ฒฉ ์ ์ฅ์์์ ํฉ์น์ง ์๊ณ ๋ก์ปฌ์ ์ฅ์๋ก ๊ฐ์ ธ์ค๊ธฐ git fetch <remote ๋ณ์นญ> 
- merge : ๋ค๋ฅธ branch๋ฅผ ํ์ฌ checkout๋ ๋ธ๋์น์ mergeํ๋ ๋ช ๋ น git merge < - branch>- merge์ ์ถฉ๋์ผ์ด๋ฌ์ ๋ merge์ ์ผ๋ก ๋๋๋ฆฌ๊ธฐ : git merge --abort 
 
- stash : ํ๋ ์์ ์ ์์๋ก ์ ์ฅ ํด๋๋ ๋ช ๋ น์ด - git statsh list : stash ๋ชฉ๋ก ํ์ธ 
- git stash apply [stash์ด๋ฆ] --index : ์์ ์ ๋ค์ ๊ฐ์ ธ์ค๊ธฐ 
- git stash drop [stash์ด๋ฆ] : ์คํ์์ stash ์ ๊ฑฐ 
- git stash pop : apply + drop ํํ 
- git stash show -p | git apply -R : stash ์ ์ฉํ ๊ฒ์ ๋ณต๊ตฌ 
 
๋ธ๋์น
- branch : branch๋ฅผ ๋ค๋ฃจ๋ ๋ช ๋ น์ด - branch ์์ฑ : git branch <branch ๋ช > 
- branch ์ญ์  : git branch -D <branch ๋ช > 
- ๋ก์ปฌ ์ ์ฅ์์ branch ์กฐํ : git branch 
- ์๊ฒฉ ์ ์ฅ์ branch ์กฐํ : git branch -r 
- ๋ก์ปฌ,์๊ฒฉ ๋ชจ๋ ์กฐํ : git branch -a 
- ์๋ก์ด ๋ธ๋์น๋ก ๋ฎ์ด์ฐ๊ธฐ : git branch -f <๊ธฐ์กด branch> <์๋ก์ด branch> 
 
- checkout : branch๋ฅผ ์ด๋ํ๋ ๋ช ๋ น์ด - branch ์ด๋ : git checkout <branch ๋ช > - ์๊ฒฉ ์ ์ฅ์์ branch๋ก checkoutํ๋ฉด ์์ค์ฝ๋๋ค์ ์กฐํํ๊ณ ๋ณ๊ฒฝํ ์ ์์ง๋ง, commit/push ํ ์ ์๊ณ ๋ค๋ฅธ branch๋ก checkout์์ branch๋ ๋ก์ปฌ์์ ์ฌ๋ผ์ง๋ค. 
 
- branch ๋ง๋ค๋ฉด์ ์ด๋ : git checkout -b <branch ๋ช > 
- ํน์  branch๋ก๋ถํฐ ์๋ก์ด ๋ธ๋์น ์์ฑ : git checkout -b <์๋ก์ด branch ๋ช > <ํน์  branch> 
- ๋ธ๋์น๋ช ๋ณ๊ฒฝ : git checkout -m <๊ธฐ์กด ๋ธ๋์น> <์๋ก์ด ๋ธ๋์น> 
- ์๊ฒฉ ์ ์ฅ์์ ํน์  branch๋ฅผ ๋ก์ปฌ์ ๊ฐ์ ธ์ค๊ธฐ : git checkout -t <remote๋ณ์นญ/branch๋ช > - ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด - git remote update๋ฅผ ํตํด ์๊ฒฉ ์ ์ฅ์๋ฅผ ์ต์ ์ํ๋ก ๊ฐฑ์
 
git ์ํ ๋ณด๊ธฐ
- log - ๋ชจ๋ log๋ณด๊ธฐ : git log 
- ํจ์น์ ํจ๊ป log ํ์ : git log -p 
- ํน์  ๊ฐ์์ ํญ๋ชฉ๋ง log ๋ณด๊ธฐ : git log -์ซ์ 
- ํน์  ์๊ฐ๋์์ log ๋ณด๊ธฐ : git log --since "6 hours" 
- ํน์  ๋ ์ง์ ๊น์ง์ log ๋ณด๊ธฐ : git log --before "2 days" 
- ์ปค๋ฐ ๋ด์ฉ์ ํ์ค๋ก ์์ถํ์ฌ ํ์ : git log --oneline 
 
- diff - ํ์ฌ ์์ ํธ๋ฆฌ์ ์ธ๋ฑ์ค ์ฐจ์ด์  ๋ณด๊ธฐ : git diff 
- ์ธ๋ฑ์ค์ ์ ์ฅ์ ์ฐจ์ด์  ๋ณด๊ธฐ : git diff --cached 
- ์์ ํธ๋ฆฌ์ ์ ์ฅ์ ์ฐจ์ด์  ๋ณด๊ธฐ : git diff HEAD 
 
- status - ์์ ํธ๋ฆฌ ์ํ ํ์ : git stauts 
- ์งง์ ํ์์ผ๋ก ํ์ : git status -s 
- ์ถ์ ๋์ง ์์ ํ์ผ๋ ํ์ : git status -u 
 
- reset - git add ์ดํ์ ๋ณ๊ฒฝ ๋ด์ญ ๋๋๋ฆฌ๊ธฐ : git reset HEAD 
- ํน์  commit์ดํ์ ๋ชจ๋ ๋ด์ญ์ ์ญ์ ํ๊ณ ๋๋์๊ฐ๊ธฐ : git reset --hard <commit ๊ฐ> 
 
์ข์ git commit ๋ฉ์์ง ์์ฑ
- ๋๋ช ์ฌ๋ณด๋ค ์๋ฏธ๋ฅผ ์ํํํ๋ ๋ช ์ฌ๋ฅผ ์ฌ์ฉ 
- ๊ด์ฌ ์ฌ์ฉ X (a,an,the) 
- ๋ถ์ ๋ฌธ - Don't์ฌ์ฉ
์ข์ commit ์ ์ํ ์์ด ๋จ์ด ๋ชฉ๋ก
- Fix : ์์  - ์คํ ์์  : Fix typo 
- A๋ฅผ ์์  : Fix A 
- B์ A๋ฅผ ์์  : Fix A in B 
- B๋ฅผ ์ํด A๋ฅผ ์์  : Fix A to B 
- A๋ฅผ ์์ ํด์ B๊ฐ ๋๋ค : Fix A so that B 
- B์ฒ๋ผ ๋ฐ์ํ๋ A๋ฅผ ์์  : Fix A where B 
- B์ผ๋ ๋ฐ์ํ๋ A๋ฅผ ์์  : Fix A when B 
 
- Set : ๋ณ์ ๊ฐ์ ๋ณ๊ฒฝ๋ฑ ์์ ์์  
- Refactor : ์ ๋ฉด ์์  
- Improve : ํธํ์ฑ,์ฑ๋ฅ,์ ๊ทผ์ฑ ๋ฑ ํฅ์์ด ์์ ๋ 
- Simplify : ์ฝ๋ ๋จ์ํ 
- Update : ์๋ชป๋๊ฒ ์์ ์ด ์๋ ์์ ,์ถ๊ฐ, ๋ณด์ - A๋ฅผ B๋ก ์ ๋ฐ์ดํธ : Update A to B 
 
- Revise : ๋ฌธ์์ ๊ฐ์ ์ด ์์ ๋ 
- Add : ์๋กญ๊ฒ ์ถ๊ฐํ๊ฑฐ๋ ๋ง๋ ๊ฒ - B๋ฅผ ์ํด A๋ฅผ ์ถ๊ฐ : Add A for B 
- B์ A๋ฅผ ์ถ๊ฐ : Add A to B 
 
- Implement : Add์ ๋นํด ๋ ํฐ ๋จ์์ ์ฝ๋์ ์ฌ์ฉ ( ํ๋์ ๊ธฐ๋ฅ ) 
- Make : ๊ธฐ์กด ๋์์ ๋ณ๊ฒฝ - A๋ฅผ Bํ๊ฒ ๋ง๋ฌ : Make A B 
 
- Remove : ์ญ์  - B์์ A๋ฅผ ์ญ์  : Remove A from B 
 
- Use : ์ฌ์ฉ - B์ A๋ฅผ ์ฌ์ฉ : Use A for B 
- B๊ฐ ๋๋๋ก A๋ฅผ ์ฌ์ฉ : Use A to B 
- B์์ A๋ฅผ ์ฌ์ฉ : Use A in B 
 
- Correct : ๋ฌธ๋ฒ์ ์ค๋ฅ๋ ํ์ ๋ณ๊ฒฝ,์ด๋ฆ ๋ณ๊ฒฝ 
- Ensure : ํ์คํ ๋ณด์ฅ๋ฐ๋๋ก ํจ 
- Prevent : ํน์ ํ ์ฒ๋ฆฌ๋ฅผ ๋ชปํ๊ฒ ๋ง์ 
- Avoid : ํน์ ํ ์ฒ๋ฆฌ๋ฅผ ํํผํ๊ฒ ํจ 
- Move : ์ฝ๋์ ์ด๋ 
- Rename : ์ด๋ฆ ๋ณ๊ฒฝ 
- Verify : ํน์  ๊ธฐ๋ฅ์ ๊ฒ์ฆ 
- Pass : ํ๋ผ๋ฏธํฐ ๋๊ธฐ๋ ์ฒ๋ฆฌ์ ์ฌ์ฉ - A๋ฅผ B๋ก ๋๊น : Pass A to B 
 
Reference
https://blog.ull.im/engineering/2019/03/10/logs-on-git.html https://git-scm.com/docs
Last updated