์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 

์ง์ ‘ ๋งŒ๋“ค๋ฉด์„œ ๋ฐฐ์šฐ๋Š” Git Internals

๋ฒ„์ „ ๊ด€๋ฆฌ ๋„๊ตฌ์˜ ์‚ฌ์‹ค์ƒ ํ‘œ์ค€์ธ Git ๋™์ž‘์„ ๊นŠ๊ฒŒ ํ•™์Šตํ•˜๊ณ  ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”!

50๋ช… ์ด ์ˆ˜๊ฐ•ํ•˜๊ณ  ์žˆ์–ด์š”.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๊ฐœ๋ฐœ ๋„๊ตฌ, Git] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • Git ๋‚ด๋ถ€ ๋™์ž‘

  • ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์ง์ ‘ ๋งŒ๋“ค๋ฉฐ ๋ฐฐ์šฐ๋Š” Git Internals ๐Ÿ“–

Build From Scratch ! Build Your Own Git !

git checkoutgit commit ๋ช…๋ น์–ด๋ฅผ Git์— ์ž…๋ ฅํ•˜๋ฉด Git ๋‚ด๋ถ€์— ์–ด๋–ค ๋™์ž‘์„ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? ์ด ๊ฐ•์˜๋Š” Git์˜ ์ฃผ์š”ํ•œ ๋™์ž‘๋“ค์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์–ด๋–ป๊ฒŒ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ•™์Šตํ•˜๊ณ , ์ž์‹ ์—๊ฒŒ ์ต์ˆ™ํ•œ ์–ธ์–ด๋กœ Git์„ ๋”ฐ๋ผํ•œ "Tig"๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.


์ˆ˜๊ฐ• ํƒ€๊ฒŸ/๊ฐ•์˜ ๋ชฉ์  ๐Ÿ™†โ€โ™€๏ธ

์ง€์‹๊ณต์œ ์ž๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์ˆ˜๊ฐ•์ƒ ์œ ํ˜•

  • ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์˜ Under the hood๋ฅผ ํƒ๊ตฌํ•˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ
  • ๊ณตํ•™์ ์œผ๋กœ ๊นŠ์€ ํƒ๊ตฌ ๊ฒฝํ—˜์„ ์›ํ•˜๋Š” ์‚ฌ๋žŒ
  • Git์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋ณด๋‹ค ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ ์‹ถ์€ ์‚ฌ๋žŒ

์ˆ˜๊ฐ•์ƒ์˜ ๊ณ ๋ฏผ & ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ๐Ÿฅฒ ๋ฉด์ ‘์—์„œ ์š”๊ตฌํ•˜๋Š” ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊นŠ์€ ํƒ๊ตฌ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋Š” ๊ฑธ๊นŒ?
  • ๐Ÿง Git์„ ์“ฐ๊ธฐ๋งŒ ํ–ˆ์ง€, ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•œ ๊ฑธ?
  • ๐Ÿคจ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ”„๋กœ์ ํŠธ๋กœ ์ ์ ˆํ•œ ๊ฒŒ ์—†์„๊นŒ?

๊ฐ•์˜๋ฅผ ๋“ค์€ ํ›„ ์ˆ˜๊ฐ•์ƒ์˜ ๋ณ€ํ™”

  • ์•„์ฃผ ์œ ๋ช…ํ•œ ๋„๊ตฌ์˜ ๊นŠ์€ ๊ณตํ•™์  ์›๋ฆฌ๋ฅผ ํƒ๊ตฌํ•œ ๊ฒฝํ—˜์ด ์žˆ๋Š” ๊ฐœ๋ฐœ์ž
  • ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋กœ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•œ ๊ฐœ๋ฐœ์ž
  • Git์˜ ๋™์ž‘์„ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž

๊ฐ•์˜ ํŠน์ง• โœจ

  • ๊ฐ•์˜๋Š” Git์˜ ๋‚ด๋ถ€ ๋™์ž‘์„ ๊ตฌํ˜„ํ•˜๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ•์˜ ์‹ค์Šต์€ Go ์–ธ์–ด๋กœ ์ง„ํ–‰๋˜์ง€๋งŒ ๋ชจ๋“  ์–ธ์–ด์—์„œ ์‰ฝ๊ฒŒ ๋Œ€์ฒด๋˜๋Š” ๋ฌธ๋ฒ•๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ๋˜๋Š” Go ๋ฌธ๋ฒ•์— ๋Œ€ํ•œ ์„ค๋ช…๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•™์Šต ๋ฐ ์œ ์˜๋ฏธํ•œ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค์Šต์„ ์ง„ํ–‰ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ๋‚ด์šฉ ๐Ÿ“š

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

์˜ˆ์ƒ ์งˆ๋ฌธ Q&A ๐Ÿ’ฌ

Q. ๊ฐ•์˜๋Š” Go ์–ธ์–ด๋กœ ์ง„ํ–‰ํ•œ๋‹ค๋Š”๋ฐ, Go๋ฅผ ์•Œ์•„์•ผ ํ•˜๋‚˜์š”?
A. ๊ฐ•์˜์—์„œ ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋งค์นญ๋˜๋Š” ๊ธฐ๋ณธ์ ์ธ ์ œ์–ด์™€ ๋ฐ˜๋ณต ๊ตฌ๋ฌธ, ํ• ๋‹น, ์ž๋ฃŒํ˜• ๋“ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Go๋Š” ๋ฌธ๋ฒ•์ด ์•„์ฃผ ๋‹จ์ˆœํ•œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ํŒจํ‚ค์ง€๋„ ๊ต‰์žฅํžˆ ์ง๊ด€์ ์ด๊ตฌ์š”. ๋”ฐ๋ผ์„œ ๊ฐ์ž์˜ ์–ธ์–ด๋กœ ๊ฐ•์˜๋ฅผ ๋”ฐ๋ผ์˜ค๊ธฐ์— ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฑฐ์—์š”.

Q. ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ค„ ์•Œ์•„์•ผ ํ•˜๋‚˜์š”?
A. ๊ฐ•์˜์—์„œ ๊ธฐ๋ณธ์ ์ธ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฐ€๋ฅด์ณ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ•์˜ ์‹ค์Šต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ณต์žกํ•˜์ง€ ์•Š์•„์š”. ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , ํŒŒ์ผ์— ์“ฐ๊ณ , ํŒŒ์ผ์„ ์ฝ๋Š” ๊ธฐ๋ณธ์ ์ธ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ์ž ์‹ค์Šต ์–ธ์–ด๋กœ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€๋Š” ์ฐพ์•„๋ณด์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Q. Git ๋ช…๋ น์–ด ๊ฐ•์˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‚˜์š”?
A. ๊ฐ•์˜ ์ค‘ Git ๋ช…๋ น์–ด๋ฅผ ์„ค๋ช…ํ•˜๊ธด ํ•˜์ง€๋งŒ Git์„ ์ฒ˜์Œ ๋ณด๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ์ •๋„๋กœ ์ž์„ธํžˆ ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ ค๋ฉด Git์‚ฌ์šฉ ๊ฒฝํ—˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ ๐Ÿ“ข

ํ•™์Šต ์ž๋ฃŒ

  • ์ด๋ก  ํ•™์Šต์„ ์œ„ํ•œ ๊ฐ•์˜ ์ž๋ฃŒ PDF
  • ๊ฒฐ๊ณผ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” Github Repository

์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • ์ž์‹ ์žˆ๋Š” ์–ธ์–ด๋กœ 500์ž ์ด์ƒ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • Git์˜ ๋‚ด๋ถ€ ๋™์ž‘์ด ๊ถ๊ธˆํ•œ ์‚ฌ๋žŒ

  • Deep Dive๋ฅผ ํ†ตํ•ด ๋งค๋ ฅ์ ์ธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ

  • ์„ธ๊ณ„์ ์ธ ์˜คํ”ˆ ์†Œ์Šค ํ•˜๋‚˜๋ฅผ ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • ์ž์‹ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ํ•˜๋‚˜

์•ˆ๋…•ํ•˜์„ธ์š”
Jayce์ž…๋‹ˆ๋‹ค.

339

๋ช…

์ˆ˜๊ฐ•์ƒ

9

๊ฐœ

์ˆ˜๊ฐ•ํ‰

3

๊ฐœ

๋‹ต๋ณ€

4.9

์ 

๊ฐ•์˜ ํ‰์ 

2

๊ฐœ

๊ฐ•์˜

์•ˆ๋…•ํ•˜์„ธ์š”. ์ €๋Š” Jayce์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์œ ๋‹ˆ์ฝ˜ ์Šคํƒ€ํŠธ์—…์˜ ํ”Œ๋žซํผ ์—”์ง€๋‹ˆ์–ด๋กœ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์ฐฝ์—…๋„ ํ•˜๊ณ  ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ๋„ ํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ”Œ๋žซํผ์„ ๋งŒ๋“ค๊ธฐ๋„ ํ•˜๋ฉด์„œ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ ์„œ๋น„์Šค ๊ฐœ๋ฐœ์ž๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์—ญํ• ๋„ ์ˆ˜ํ–‰ํ•ด๋ณด๊ณ  ํ”Œ๋žซํผ ์—”์ง€๋‹ˆ์–ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์—ญํ• ๋„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ "์ž˜ํ•˜๋Š” Software Engineer๋Š” ์–ด๋–ค ํŠน์ง•์ด ์žˆ๊ณ  ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ๋  ์ˆ˜ ์žˆ๊ตฌ๋‚˜"๋ฅผ ๋‚˜๋ฆ„๋Œ€๋กœ ์ •๋ฆฝํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์งง๊ฒŒ ๋งํ•ด์„œ Deep Dive ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ํ•จ๊ป˜ ์ผํ•˜๋Š” ์—”์ง€๋‹ˆ์–ด๋กœ์„œ ๋งค๋ ฅ์ ์ด๋ผ๊ณ  ๋А๋‚๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ฃผ์–ด์ง„ ์ผ์„ ๊ธฐ๊ณ„์ฒ˜๋Ÿผ ์ณ๋‚ด๋Š” ์‚ฌ๋žŒ์€ ์–ด๋–ค ์ƒํ™ฉ์— ๋Œ€ํ•œ ์ตœ์„ ์˜ ์„ ํƒ์„ ๋‚ด๋ฆฌ๊ธฐ๊นŒ์ง€ ๋น„๊ต์  ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ๋ฐ˜๋ฉด ์™œ ์ด๋Ÿฐ ๊ฒฐ์ •์„ ํ•ด์•ผํ•˜๋Š”์ง€ ๊ธฐ์ˆ  ๋‚ด๋ฉด์˜ ๊ณตํ•™์ ์ธ ์ด์œ ๋ฅผ ํŒŒ๊ณ ๋“ค๋ฉฐ ์ดํ•ดํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ๊ธˆ๋ฐฉ ๋‹ค๋ฅธ ์˜์‚ฌ ๊ฒฐ์ •์—์„œ๋„ ๊ณตํ•™์ ์œผ๋กœ ์„ค๋“๋ ฅ ๊ฐ•ํ•œ ์ฃผ์žฅ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๋ฉ๋‹ˆ๋‹ค.

์ œ๊ฐ€ ๋งŒ๋“œ๋Š” ๊ฐ•์˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ์–•๊ฒŒ ์ตํžˆ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๋“ค์ด ํ›Œ๋ฅญํ•œ ํŒ€ ๋™๋ฃŒ, ๋งค๋ ฅ์ ์ธ ๊ฐœ๋ฐœ์ž, ๋‹จ๋‹จํ•œ ๊ธฐ์ˆ ์ž๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋”์šฑ ๋งค๋ ฅ์žˆ๋Š” ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด ์กฐ๊ธˆ ๋” ๊นŠ์€ ๋‚ด์šฉ์„ ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ ํ•ฉํ•œ ๊ฐ•์˜๋ฅผ ์ œ ์ตœ์„ ์˜ ๋…ธ๋ ฅ์œผ๋กœ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

35๊ฐœ โˆ™ (6์‹œ๊ฐ„ 38๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!