๐Ÿ‘ Git ๋ช…๋ น์–ด ์ •๋ฆฌ

๋ฐ•์ƒ์€ยท2021๋…„ 9์›” 20์ผ
0

๐Ÿ”— Git/GitHub ๐Ÿ”—

๋ชฉ๋ก ๋ณด๊ธฐ
1/2

๐Ÿ˜บ Git

Git์€ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ์˜๋ฏธํ•จ

๋ฒ„์ „ ๊ด€๋ฆฌ ๋„๊ตฌ๋ž€ ํŠน๋ณ„ํ•œ ๊ฒŒ ์•„๋‹ˆ๊ณ  RPG๊ฒŒ์ž„์—์„œ ์„ธ์ด๋ธŒํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํŠน์ • ์‹œ์ ์„ ์ €์žฅํ•˜๊ณ  ๋งˆ์Œ๋Œ€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด๋จ

๐Ÿต GitHub

Git์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค๊ณผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์˜จ๋ผ์ธ์ƒ์— ์˜ฌ๋ ค๋†“๊ณ  ์‚ฌ์šฉํ•˜๋Š” ํ˜ธ์ŠคํŒ… ์‚ฌ์ดํŠธ์ค‘ ํ•˜๋‚˜๊ฐ€ GitHub์ž„

๐Ÿคจ ์šฉ์–ด

1. ๋กœ์ปฌ์ €์žฅ์†Œ

๋‹จ์–ด ๊ทธ๋Œ€๋กœ ๋‚ด ์ปดํ“จํ„ฐ์˜ ์ €์žฅ์†Œ๋ฅผ ์˜๋ฏธํ•จ, ์ฆ‰ ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ํด๋”

2. HEAD

ํ˜„์žฌ ๋กœ์ปฌ์ €์žฅ์†Œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹์„ ์˜๋ฏธํ•จ
HEAD๊ฐ€ ํฌ์ธํ„ฐ๋ฉด์„œ ํ˜„์žฌ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹์˜ ์Šค๋ƒ…์ƒท์„ ๋กœ์ปฌ์ €์žฅ์†Œ์— ๋ณด์—ฌ์คŒ

๐Ÿ˜ฎ ๋ช…๋ น์–ด

1. $ git init

๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ํ•  ํด๋”๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ช…๋ น์–ด
์ฆ‰, Git์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ง€์ •ํ•˜๋Š” ๋ช…๋ น์–ด์ž„
๋‚ด๋ถ€์— .git์ด๋ผ๋Š” ์ˆจ๊น€ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ ๋ฒ„์ „์ •๋ณด, ์›๊ฒฉ์ €์žฅ์†Œ์ •๋ณด ๋“ฑ์ด ์ €์žฅ๋จ

2. $ git config

๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์ง€์ •ํ•˜๋Š” ๋ช…๋ น์–ด
GitHub์— ๋“ฑ๋กํ•œ ์ด๋ฉ”์ผ๊ณผ ์ด๋ฆ„๊ณผ ๋™์ผํ•˜๊ฒŒ ์ง€์ •ํ•ด์•ผ ์—ฐ๋™์ด ๊ฐ€๋Šฅํ•จ
1. $ git config --global user.email <"์ด๋ฉ”์ผ">
2. $ git config --global user.name <"์ด๋ฆ„">

3. $ git add

์ƒํƒœ๋ณ€๊ฒฝ ๋‚˜์ค‘์— ์ถ”๊ฐ€

4. $ git commit

  1. -m: ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•œ ์ค„ ์งœ๋ฆฌ๋กœ ์ง€์ •
  2. -a: untracked์„ ์ œ์™ธํ•˜๊ณ  ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ž๋™์œผ๋กœ addํ•˜๊ณ  ์ปค๋ฐ‹

5. $ git log

์ปค๋ฐ‹ํ•œ ์ •๋ณด์ด๋ ฅ์„ ๋ณด์—ฌ์คŒ

  • --oneline: ํ•œ ์ค„๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด๋ ฅ์„ ๋ณด์—ฌ์คŒ
  • -n์ˆซ์ž: ์ตœ์‹ ๊ฒƒ๋ถ€ํ„ฐ ์ˆซ์ž๊ฐœ์ˆ˜๋งŒํผ ๋ณด์—ฌ์คŒ
  • --graph: ์ด๋ ฅ์„ ๊ทธ๋ž˜ํ”„์ฒ˜๋Ÿผ ๋ณด๊ธฐ์ข‹๊ฒŒ ๋ณด์—ฌ์คŒ
  • --decorate: ๋ธŒ๋žœ์น˜์™€ ํƒœ๊ทธ ๋“ฑ์˜ ์ฐธ์กฐ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณด์—ฌ์คŒ

6. $ git checkout

ํŠน์ • ์ปค๋ฐ‹์ด๋‚˜ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜๋Š” ๋ช…๋ น์–ด
1. $ git checkout -: ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์ด๋™

  • -b: ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ์ƒ์„ฑํ›„ ์ฒดํฌ์•„์›ƒ

7. $ git remote <์›๊ฒฉ์ €์žฅ์†Œ์ด๋ฆ„> <์›๊ฒฉ์ €์žฅ์†Œ์ฃผ์†Œ>

์›๊ฒฉ์ €์žฅ์†Œ์™€ ๋กœ์ปฌ์ €์žฅ์†Œ๋ฅผ ์—ฐ๊ฒฐ์‹œํ‚ค๋Š” ๋ช…๋ น์–ด

  • ์›๊ฒฉ์ €์žฅ์†Œ ์ด๋ฆ„์€ ๋Œ€๋ถ€๋ถ„ origin์œผ๋กœ ์ง€์Œ

8. $ git clone <์›๊ฒฉ์ €์žฅ์†Œ์ฃผ์†Œ>

์›๊ฒฉ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ๋‚ด ๋กœ์ปฌ์ €์žฅ์†Œ์— ๋ณต์‚ฌ

  • $ git clone <์›๊ฒฉ์ €์žฅ์†Œ์ฃผ์†Œ> .: ์ƒˆ๋กœ์šด ํด๋” ์ƒ์„ฑํ•˜์ง€์•Š๊ณ  ํ˜„์žฌ ํด๋”์— ๋ณต์‚ฌ

9. $ git push <์›๊ฒฉ์ €์žฅ์†Œ์ด๋ฆ„> <๋ธŒ๋žœ์น˜์ด๋ฆ„>

๋Œ€๋ถ€๋ถ„ ์›๊ฒฉ์ €์žฅ์†Œ์ด๋ฆ„์€ origin์ด๊ณ , ์ดˆ๊ธฐ๋ธŒ๋žœ์น˜์ด๋ฆ„์€ master or main์ž„

  • $ git push origin master
  • -u: unstream์ง€์ •, ํ•œ๋ฒˆ ์ง€์ •ํ•˜๋ฉด ๋‹ค์Œ๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ ์ง€์ •๋จ

10. $ git branch

๋ธŒ๋žœ์น˜์— ๊ด€๋ จ๋œ ๊ฒฐ๊ณผ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น์–ด

  1. $ git branch: ๋ธŒ๋žœ์น˜ ๋ฆฌ์ŠคํŠธ ๋ฐ ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ๋ณด์—ฌ์คŒ
  2. $ git branch <๋ธŒ๋žœ์น˜์ด๋ฆ„>: ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
  • -v: ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก๊ณผ ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹์„ ๋ณด์—ฌ์คŒ
  • -f: ?
  • -d: ๋ธŒ๋žœ์น˜ ์‚ญ์ œ
  • -D: ๋ธŒ๋žœ์น˜ ๊ฐ•์ œ ์‚ญ์ œ

11. $ git checkout

๋ธŒ๋žœ์น˜๋ฅผ ์ด๋™ํ•˜๋Š” ๋ช…๋ น์–ด

12. $ git merge <๋ธŒ๋žœ์น˜์ด๋ฆ„>

ํ˜„์žฌ ์‚ฌ์šฉ์ค‘์ธ ๋ธŒ๋žœ์น˜์™€ ๋ธŒ๋žœ์น˜์ด๋ฆ„์„ ์ ์€ ๋ธŒ๋žœ์น˜๋ฅผ ๋‘๊ฐœ ํ•ฉ์นจ

13. $ git rebase

14. $ git status

ํ˜„์žฌ ๋กœ์ปฌ์ €์žฅ์†Œ์˜ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ช…๋ น์–ด
์ƒํƒœ๋ž€ untracked, staged, unmodified, modified๋ฅผ ์˜๋ฏธ

15. $ git reset <...>

ํ˜„์žฌ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹์„ ์ทจ์†Œํ•˜๋Š” ๋ช…๋ น์–ด
$ git reset๋งŒ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•ด์„œ add๋ฅผ ์ทจ์†Œํ•˜๊ธฐ๋„ ํ•จ

  • --soft: ํ˜„์žฌ๊นŒ์ง€ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์œ ์ง€ํ•˜๊ณ  ์ปค๋ฐ‹์„ ์ทจ์†Œํ•˜์ง€๋งŒ staged์ƒํƒœ๋Š” ์œ ์ง€
  • --mixed: ํ˜„์žฌ๊นŒ์ง€ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์œ ์ง€ํ•˜๊ณ  ์ปค๋ฐ‹์„ ์ทจ์†Œํ•˜๋ฉฐ add๊นŒ์ง€ ์ทจ์†Œ๋จ
  • --hard: ํ˜„์žฌ๊นŒ์ง€ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ชจ๋‘ ์ œ๊ฑฐํ•˜๊ณ  ์ปค๋ฐ‹์„ ์ทจ์†Œํ•จ
  • ~<์ˆซ์ž>: ์ˆซ์ž๋ฒˆ์งธ ์กฐ์ƒ์„ ์˜๋ฏธ

  • ^<์ˆซ์ž>: ?
    ( ์ˆซ์ž๋Š” ์ƒ๋žต์‹œ 1 )

  • $ git reset --soft HEAD~1 : ๋ฐ”๋กœ ์ด์ „ ์ปค๋ฐ‹์œผ๋กœ ๋˜๋Œ๋ฆฌ๋ฉฐ, ํ˜„์žฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์œ ์ง€ํ•จ

16. $ git revert

$ git reset์ฒ˜๋Ÿผ ์ปค๋ฐ‹์„ ์ทจ์†Œํ•˜๋Š” ๊ธฐ๋Šฅ์ด์ง€๋งŒ revert๋Š” ์ด๋ ฅ์„ ๋‚จ๊ธฐ๋ฉด์„œ ์ปค๋ฐ‹์„ ์ทจ์†Œํ•˜๋Š” ๋ช…๋ น์–ด์ž„

17. $ git cherry-pick

18. $ git stash

์ด์ „ ์ปค๋ฐ‹๋ถ€ํ„ฐ ํ˜„์žฌ๊นŒ์ง€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ž„์‹œ ๊ณต๊ฐ„์— ๋„ฃ์–ด๋‘๊ณ  ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ช…๋ น์–ด

๐Ÿ˜ฏ ํŠน์ง•์ ์ธ๊ฒƒ

1. ์ปค๋ฐ‹

์ปค๋ฐ‹์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋งŒ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ์ปค๋ฐ‹ํ•œ ์ƒํƒœ์˜ ๋ชจ๋“  ๊ฒƒ์ด ์ €์žฅ๋จ

์ปค๋ฐ‹์ด ๋ช‡ ๋ฒˆ ์—†์„ ๊ฒฝ์šฐ์—๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ๋งŒ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๊ฒ ์ง€๋งŒ,
๋งŒ์•ฝ ์ปค๋ฐ‹์ด 10000๋ฒˆ ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ดค์„ ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด์ „์˜ ๋ชจ๋“  ์ปค๋ฐ‹์ธ 10000๋ฒˆ์˜ ์ปค๋ฐ‹์„ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•˜๋ฏ€๋กœ ๋” ๋น„ํšจ์œจ์ ์ด๊ฒŒ ๋จ

2. ํŒŒ์ผ์ƒํƒœ 4๊ฐ€์ง€

  1. untracked: ํ•œ ๋ฒˆ๋„ ์ปค๋ฐ‹๋˜์ง€ ์•Š๊ณ , addํ•˜์ง€๋„ ์•Š์€ ํŒŒ์ผ
  2. staged: addํ•œ ์ƒํƒœ ( commit ๋Œ€๊ธฐ์ƒํƒœ )
  3. unmodified: commitํ•œ ์ƒํƒœ ์ฆ‰, ํ•˜๋‚˜์˜ ์Šค๋ƒ…์ƒท์„ ์ฐ์€ ์ƒํƒœ
  4. modified: ์Šค๋ƒ…์ƒท์„ ์›๊ฒฉ์ €์žฅ์†Œ์— pushํ•œ ์ƒํƒœ

3. ๋ณ‘ํ•ฉ์˜ 3๊ฐ€์ง€

  1. Merge commit: ์„œ๋กœ ๋‹ค๋ฅธ ๋‘๊ฐœ์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ์ถฉ๋Œ์—†์ด ํ•ฉ์ณ์ง€๋Š” ๊ฒƒ
  2. Fast-forward: ์ž์‹ ์˜ ๋ฟŒ๋ฆฌ์— ํ•ด๋‹นํ•˜๋Š” ๋ธŒ๋žœ์น˜์™€ ํ•ฉ์น˜๋Š” ๊ฒฝ์šฐ
  3. Conflict: ์„œ๋กœ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋ฅผ ํ•ฉ์น˜๋Š”๋ฐ ์ถฉ๋Œ์ด ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ

4. fork

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์˜คํ”ˆ์†Œ์Šค์— ์ฐธ์—ฌํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•จ
ํฌํฌํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ๋‚˜์˜ ๊นƒ์— ์ถ”๊ฐ€ํ•˜๊ณ  ๋‚ด๊ฐ€ ์ˆ˜์ •ํ•œ๋’ค ์›์ž‘์ž์—๊ฒŒ ํ’€๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋‚ด๋Š” ํ˜•์‹์ž„
์•„๋ฌด์—๊ฒŒ๋‚˜ ์“ฐ๊ธฐ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋ง๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ

๐Ÿ‘‡

์ฐธ๊ณ ํ•œ ์ž๋ฃŒ
ํŒ€๊ฐœ๋ฐœ์„ ์œ„ํ•œ Git GitHub์‹œ์ž‘ํ•˜๊ธฐ - ์ •ํ˜ธ์˜, ์ง„์œ ๋ฆผ ์ง€์Œ

0๊ฐœ์˜ ๋Œ“๊ธ€