๐Ÿ“˜ [Git] ๋ช…๋ น์–ด ์ •๋ฆฌ

๐Ÿ“˜ [Git] ๋ช…๋ น์–ด ์ •๋ฆฌ

[Git] ๋ช…๋ น์–ด ์ •๋ฆฌ


1. Git์— ๊ด€ํ•˜์—ฌ


1-1 Git์ด๋ž€?


  • Git์€ ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๊ณ  ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ ์ž‘์—…์„ ์กฐ์œจํ•˜๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค.
  • ๋ถ„์‚ฐ ํ˜•์ƒ ๊ด€๋ฆฌ: Git์€ ๋ถ„์‚ฐํ˜• ์‹œ์Šคํ…œ์ด๋ผ์„œ, ๋ชจ๋“  ์ฐธ์—ฌ์ž๊ฐ€ ๋™์ผํ•œ ์ „์ฒด ์ด๋ ฅ์„ ๋ณต์ œํ•ด ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท์ด ์•ˆ ๋˜๋Š” ์ƒํ™ฉ์—์„œ๋„ ๋‚ด ์ปดํ“จํ„ฐ์— ์™„์ „ํ•œ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๊ณ , ๋‚˜์ค‘์— ๋‹ค์‹œ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์–ด์š”.

1-2 Git, GitHub์ฐจ์ด


  • GitHub์™€ Git: GitHub๋Š” Git ์ €์žฅ์†Œ๋ฅผ ์˜จ๋ผ์ธ์—์„œ ํ˜ธ์ŠคํŒ… ํ•ด์ฃผ๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, Git์ด ์ž๋™์ฐจ๋ผ๋ฉด GitHub๋Š” ๊ณ ์†๋„๋กœ ํœด๊ฒŒ์†Œ ๊ฐ™์€ ์—ญํ• ์ด์—์š”. ๋‚ด ์ปดํ“จํ„ฐ์˜ Git ์ €์žฅ์†Œ๋ฅผ GitHub์— ์˜ฌ๋ ค ๋‘๋ฉด, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ๋ฐฑ์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (GitHub ์™ธ์—๋„ GitLab, Bitbucket ๊ฐ™์€ ์„œ๋น„์Šค๋„ ์žˆ์–ด์š”.)

2. Git ์ดˆ๊ธฐ ์„ค์ •


๋ช…๋ น์–ด์„ค๋ช…
git config --global user.name "์ด๋ฆ„"์‚ฌ์šฉ์ž ์ด๋ฆ„ ์„ค์ •
git config --global user.email "์ด๋ฉ”์ผ"์‚ฌ์šฉ์ž ์ด๋ฉ”์ผ ์„ค์ •
git config --global core.editor "์—๋””ํ„ฐ"๊ธฐ๋ณธ ์—๋””ํ„ฐ ์„ค์ •
git config --list์„ค์ • ์ •๋ณด ํ™•์ธ

3. ๋กœ์ปฌ ์ €์žฅ์†Œ ์ƒ์„ฑ ๋ฐ ์—ฐ๊ฒฐ


๋ช…๋ น์–ด์„ค๋ช…
git init๋กœ์ปฌ ์ €์žฅ์†Œ ์ดˆ๊ธฐํ™”
git clone [url]์›๊ฒฉ ์ €์žฅ์†Œ ๋ณต์ œ

4. ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ถ”์ 


| ๋ช…๋ น์–ด | ์„ค๋ช… | | โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”- | โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€“ | | git status | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ | | git add [ํŒŒ์ผ๋ช…] | ํŠน์ • ํŒŒ์ผ ์Šคํ…Œ์ด์ง• | | git add . | ์ „์ฒด ๋ณ€๊ฒฝ ํŒŒ์ผ ์Šคํ…Œ์ด์ง• | | git reset [ํŒŒ์ผ๋ช…] | ์Šคํ…Œ์ด์ง€์—์„œ ํŒŒ์ผ ์ œ๊ฑฐ | | git reset --hard HEAD^ | ์ตœ์‹  ์ปค๋ฐ‹ ์ทจ์†Œ | | git reset --hard HEAD~(์ˆซ์ž) | ์ˆซ์ž๋ฅผ ์ ์œผ๋ฉด ํ•ด๋‹น ์ˆซ์ž๋งŒํผ ์ตœ๊ทผ ์ปค๋ฐ‹๋ถ€ํ„ฐ ์ทจ์†Œ | | git reset --soft | ์Šคํ…Œ์ด์ง• ์ƒํƒœ ์œ ์ง€ | | git reset --mixed | ์Šคํ…Œ์ด์ง• ์ทจ์†Œ local ๋ณ€๊ฒฝ ์ƒํƒœ๋กœ ์œ ์ง€ |

โš ๏ธ`git reset๋Š” ๊ธฐ๋ก ์†์‹ค์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•˜์„ธ์š”.


5. ์ปค๋ฐ‹


๋ช…๋ น์–ด์„ค๋ช…
git commit -m "๋ฉ”์‹œ์ง€"์ปค๋ฐ‹ ์ƒ์„ฑ
git commit -am "๋ฉ”์‹œ์ง€"add + commit ํ•œ๋ฒˆ์— ์ˆ˜ํ–‰
git log์ปค๋ฐ‹ ๋กœ๊ทธ ํ™•์ธ
git log --onelineํ•œ ์ค„ ์š”์•ฝ ๋กœ๊ทธ ํ™•์ธ
git log --graph๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉ์ด๋ ฅ ๊ทธ๋ž˜ํ”„ํ™”

6. ๋ธŒ๋žœ์น˜


๋ช…๋ น์–ด์„ค๋ช…
git branch๋ธŒ๋žœ์น˜ ๋ชฉ๋ก ํ™•์ธ
git branch [๋ธŒ๋žœ์น˜๋ช…]๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
git checkout [๋ธŒ๋žœ์น˜๋ช…]๋ธŒ๋žœ์น˜ ์ด๋™
git checkout -b [๋ธŒ๋žœ์น˜๋ช…]๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ํ›„ ์ด๋™
git branch -d [๋ธŒ๋žœ์น˜๋ช…]๋ธŒ๋žœ์น˜ ์‚ญ์ œ

์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ branch๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์ฃผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ์˜ˆ์—์„œ๋Š” (local) develop์ด๋ผ๋Š” ๊ฐœ๋ฐœ ์ „์šฉ branch๋กœ๋ถ€ํ„ฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋ฅผ ์œ„ํ•ด ์ƒˆ๋กœ (local) feature-branch๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ checkout ๊นŒ์ง€ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ git checkout -b feature-branch develop

์œ„ ํ•œ ์ค„์€ ์•„๋ž˜์˜ ์„ธ ์ค„๊ณผ ๊ฐ™์€ ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

$ git checkout develop                    # ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ develop ๋ธŒ๋žœ์น˜๋กœ ์ด๋™
$ git branch feature-branch            # ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ develop ๋ธŒ๋žœ์น˜๋กœ๋ถ€ํ„ฐ ๋กœ์ปฌ์— feature-branch ์ƒ์„ฑ
$ git checkout feature-branch         # ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ feature-branch๋กœ ์ด๋™ 
$ git checkout -b [new_branch] [parent_branch]

์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜๊นŒ์ง€ ํ™•์ธํ•˜๋ ค๋ฉด -r ๋˜๋Š” -a๋ฅผ ์˜ต์…˜์„ ์ ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

$ git branch -r       // -r์€ remote (์›๊ฒฉ) ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. 
$ git branch -a      // -a๋Š” all(๋ชจ๋“ ) ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์›๊ฒฉ ์ €์žฅ์†Œ์˜ ft-01 branch๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด -t ์˜ต์…˜์„ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

$ git checkout -t origin/ft-01 

7. ๋ณ‘ํ•ฉ(Merge) & ์ถฉ๋Œ ํ•ด๊ฒฐ


๋ช…๋ น์–ด์„ค๋ช…
git merge [๋ธŒ๋žœ์น˜๋ช…]ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ
git mergetool๋ณ‘ํ•ฉ ๋„๊ตฌ ์‹คํ–‰
git diff๋ณ€๊ฒฝ์  ๋น„๊ต

8. ์›๊ฒฉ ์ €์žฅ์†Œ์™€์˜ ์—ฐ๋™


๋ช…๋ น์–ด์„ค๋ช…
git remote add origin [url]์›๊ฒฉ ์ €์žฅ์†Œ ์—ฐ๊ฒฐ
git remote -v์—ฐ๊ฒฐ๋œ ์›๊ฒฉ ์ €์žฅ์†Œ ํ™•์ธ
git push -u origin [๋ธŒ๋žœ์น˜๋ช…]์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ํ‘ธ์‹œ
git pull origin [๋ธŒ๋žœ์น˜๋ช…]์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ํ’€
git fetch์›๊ฒฉ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๊ฐ€์ ธ์˜ค๊ธฐ (๋ณ‘ํ•ฉ์€ ์•ˆ ํ•จ)

9. ๊ธฐํƒ€ ์œ ์šฉํ•œ ๋ช…๋ น์–ด


๋ช…๋ น์–ด์„ค๋ช…
git stash์ž‘์—… ์ค‘์ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ž„์‹œ ์ €์žฅ
git stash pop์ž„์‹œ ์ €์žฅํ•œ ๋‚ด์šฉ ๋ณต์›
git tagํƒœ๊ทธ ๋ชฉ๋ก ํ™•์ธ
git tag [ํƒœ๊ทธ๋ช…]ํƒœ๊ทธ ์ƒ์„ฑ
git reflogHEAD ์ด๋™ ๊ธฐ๋ก ๋ณด๊ธฐ

๐Ÿ“‘ Reference



Pagination


ยฉ 2025. All rights reserved.

Powered by Hydejack v9.2.1