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