Let' git it!!!๐Ÿค™๐Ÿป

Carminidoยท2020๋…„ 2์›” 16์ผ
0

ComputerScience

๋ชฉ๋ก ๋ณด๊ธฐ
4/9
  1. Git /Github ๋ž€?
  2. VCS(Version Control System)์ด๋ž€?
  3. repository ์ƒ์„ฑ + ๊ด€๋ จ ๋ช…๋ น์–ด(git init, git add remote, git remote -v)
  4. local repository / remote repository
  5. git clone vs. git pull ๊ฐœ๋… ๋ฐ ์ฐจ์ด์ 
  6. branch์˜ ๊ฐœ๋… + ๊ด€๋ จ ๋ช…๋ น์–ด(branch ์ƒ์„ฑ, branch ์ด๋™, branch ์ œ๊ฑฐ)
  7. git staging ์„ค๋ช… + ๊ด€๋ จ ๋ช…๋ น์–ด(add, commit, push)
  8. conflict๋Š” ์–ธ์ œ, ์™œ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€? ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š”๊ฐ€?

1. Git / Github ๋ž€?

Git ์€ VSC ( Version Control System) ์ด๋‹ค.
ํ•ด์„์„ ํ•ด๋ณด๋ฉด ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์ธ๋ฐ ์—ฌ๊ธฐ์„œ์˜ ๋ฒ„์ „์€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋งํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์†Œ์Šค์ฝ”๋“œ ๋ฒ„์ „์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ? ๋ฐ”๋กœ ์†Œ์Šค ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์— ๋Œ€ํ•œ ๋ฒ„์ „์ด๋‹ค. ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€, ์–ด๋–ค ๊ฒƒ์ด ์ƒ๊ฒผ๋Š”์ง€์— ๋Œ€ํ•œ ๊ฒƒ๋“ค์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์™œ ์ด๋Ÿฐ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋“ค์„ ๊ด€๋ฆฌํ•ด์•ผ ํ• ๊นŒ? ์ €๋Ÿฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ๊นŒ์ง€ ๋งŒ๋“ค๋ฉด์„œ? ๊ทธ๋ƒฅ ์ฝ”๋”ฉ๋งŒ ํ•˜๋ฉด ๋˜๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€? ๋ผ๋Š” ์˜๋ฌธ์ ์ด ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ด๋Ÿฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ์—†์ด ์ผ์„ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.
์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด์„œ PPT๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ๊ทธ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ณผ์ •์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋”ฑ ํ•œ๋ฒˆ์— ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ ๊ฒƒ์ด๋‹ค.


์ตœ์ข…๋ณธ 1.
์ตœ์ข…๋ณธ 1_1
์ง„์งœ ์ตœ์ข…๋ณธ
์ง„์งœ์ง„์งœ ์ตœ์ข…๋ณธ
....
์ฝ”๋”ฉ์„ ํ• ๋•Œ ๋งˆ๋‹ค ์ด๋Ÿฐ์‹์œผ๋กœ ์›์‹œ์ ์œผ๋กœ ์ €์žฅ์„ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์ •๋ง ๊ณ ํ†ต์Šค๋Ÿฝ๊ฒ ์ฃ ? ํ•˜์ง€๋งŒ VCS๋Š” ์ด๋Ÿฐ ์ƒํ™ฉ์ด ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.

์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” ๊ฐœ๋ฐœ์„ ๋ฐฐ์šธ๋•Œ๋ถ€ํ„ฐ Git๊ณผ ํ•จ๊ป˜ ์‹œ์ž‘์„ ํ•ด์„œ Git ๋ฐ–์— ์—†์„๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ Git์€ ์•ฝ 10๋…„ ์ „๋ถ€ํ„ฐ ๋งŽ์ด ์“ฐ์ด๊ฒŒ ๋œ ๊ฒƒ์ด๋ฉฐ ๊ทธ ์ „์—๋„ ๋‹ค๋ฅธ VCS๊ฐ€ ์žˆ์—ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Git์ด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๋ณด๋‹ค ๋” ํŽธํ•˜๊ณ  ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊นƒ์„ ์“ด๋‹ค๊ณ  ํ•˜๋„ค์š”.

Q. ๊ทธ๋Ÿผ ์™œ Git์„ ์“ฐ๋Š” ๊ฒƒ์ผ๊นŒ?

์šฐ๋ฆฌ๊ฐ€ ๊ธฐ์กด์— ์“ฐ๋˜ ๊ฒƒ์ด ์•„๋‹Œ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์“ฐ๊ฒŒ ๋œ๋‹ค๋ฉด ๊ทธ๋งŒํผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ๊ฒƒ๋„ ๋งŽ๊ณ  ์ตํ˜€์•ผ ํ•˜๋Š” ๊ฒƒ๋„ ๋งŽ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋„ ์œˆ๋„์šฐ๋ฅผ ์“ฐ๋‹ค๊ฐ€ ๋งฅ์œผ๋กœ ๋ฐ”๊พธ์—ˆ๋”๋‹ˆ ํ‚ค๋ณด๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํ„ฐ์น˜ํŒจ๋“œ ์กฐ์ž‘ ๋“ฑ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋ฐฐ์›Œ์•ผํ•˜๊ณ  ๊น”์•„์•ผ ํ•˜๋Š” ๊ฒƒ๋“ค๋„ ์žˆ์–ด์„œ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒˆ๋กœ์šด ๊ฑธ ๋„์ž…ํ•˜๋ฉด ํšŒ์‚ฌ ์ž…์žฅ์—์„œ๋„ ๊ทธ๋งŒํผ์˜ ๋น„์šฉ์ด ์ƒ๊ธฐ๊ฒŒ ๋˜๋Š”๋ฐ์š” ์™œ ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ๊ฒƒ๋“ค์„ ๋‘๊ณ  Git์œผ๋กœ ๋„˜์–ด์™”์„๊นŒ์š”?

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

Q. ํ˜‘์—…๊ณผ Git & Github

Git์ด ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋ผ๋ฉด
Github๋Š” ๊ทธ ๊นƒ์„ ์ธํ„ฐ๋„ท์— ๋„์šด ์ค‘์•™ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

๊นƒ์ด ํŽธํ•˜๋‹ค๋ฉฐ, ๊ทธ๋Ÿผ ๊นƒ๋งŒ ์“ฐ๋ฉด ๋˜๋Š”๊ฑฐ์ง€ ์™œ ์ค‘์•™ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•ด? ๊ทธ๋ƒฅ ์šฐ๋ฆฌ๊ฐ€ ๊ด€๋ฆฌํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฑด๊ฐ€? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž ๋งŒ์•ฝ, ๊ฐœ๋ฐœ์ž 10๋ช…์ด ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์ผ์„ ํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, ๊ทธ ์ž‘์—…์„ ํ• ๋•Œ ๊ธฐ์ค€์ด ๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๊ฒ ์ฃ .

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

์ฝ”๋“œ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๊ธฐ์ค€์ด ๋˜๋Š” ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ(Repository ๋ผ์„œ ์ค„์—ฌ์„œ Repo)๊ฐ€ ์žˆ๋Š”๋ฐ์š”.
์ด๋Ÿฐ ์ค‘์•™ ์ฝ”๋“œ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉด ์ด ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์—๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ค‘์•™ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์ด์ฃ . Github๋Š” ๊ทธ ์ค‘์•™ ์„œ๋ฒ„ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Github๋ฅผ ์“ฐ์ง€ ์•Š์•„๋„ ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ์„œ๋ฒ„๋ฅผ ๋„์›Œ์„œ ๊ทธ๊ฑธ ์ค‘์•™๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ์‚ผ์•„์„œ ์ผ์„ ํ•  ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ ๊ทธ๋Ÿด ๊ฒฝ์šฐ์—๋Š” ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š”๊ฒƒ๋„ ๋งŽ๊ณ  ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…๋„ ๋งŽ์•„์„œ ํŽธ๋ฆฌํ•˜๊ณ  ๊ฐ€๊ฒฉ์ ์œผ๋กœ๋„ ๊ดœ์ฐฎ์€ Github๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด์ฃ .
๋˜ Github์—๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ์†Œ์Šค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋“ ์ง€ ํŒ€์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋“ ์ง€ ๋ฆฌ๋ทฐ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋“ ์ง€ ํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋‹ˆ ์•ˆ์“ธ ์ด์œ ๊ฐ€ ์—†๊ฒ ์ฃ ?

์ด๋Ÿฐ ๊ท€์—ฌ์šด ๊ณ ์–‘์ด๋„ ๋ณผ ์ˆ˜ ์žˆ๊ตฌ์š”...?

local vs server

์ž์ด์ œ ์ค‘์•™ ์„œ๋ฒ„์— ์žˆ๋Š” ์ฝ”๋“œ๋กœ ์ž‘์—…์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์šฐ์„  ๊ทธ ์ค‘์•™ ์„œ๋ฒ„์— ์žˆ๋Š” ์†Œ์Šค๋ฅผ ๋‚ด ์ปดํ“จํ„ฐ (local)๋กœ ๋‹ค์šด๋ฐ›๊ฒ ์ฃ ? ์ด๋•Œ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ž‘์—…์ด ๋ฐ”๋กœ Clone( ๋ณต์ œ ) ์ž…๋‹ˆ๋‹ค.

๋งคํŠธ๋ฆญ์Šค์˜ ๋ณต์ œ์ธ๊ฐ„์ฒ˜๋Ÿผ...ํ†ต์งธ๋กœ ๋ณต์ œ๋œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์šฐ๋ฆฌ์˜ ๋กœ์ปฌ์—์„œ ์ž‘์—…์„ ํ•˜๊ณ  ๊ทธ ์ž‘์—…์ด ๋๋‚˜๋ฉด ๋‹ค์‹œ ์„œ๋ฒ„์— ์˜ฌ๋ ค์•ผ๊ฒ ์ฃ ?
๊ทธ๋•Œ ํ•˜๋Š” ์ž‘์—…์ด push ์ž…๋‹ˆ๋‹ค.

my local => server ( github)

์ด๋ ‡๊ฒŒ ์ค‘์•™ ์„œ๋ฒ„์— push ํ•ด์„œ ์˜ฌ๋ผ๊ฐ„ ์ฝ”๋“œ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€ ๊ทธ ์ตœ์‹  ์†Œ์Šค๋ฅผ ๋ฐ›๊ฒ ์ฃ ? ์ด๋•Œ ์ด๋ฃจ์–ด ์ง€๋Š” ์ž‘์—…์ด (pull) ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๊ธฐ์–ตํ•ด์•ผ ํ•  ๊ฒƒ์€, ์ฒ˜์Œ์— ํ•˜๋Š” ์ž‘์—…์€ clone์ด์—ˆ๊ณ , ์ตœ์‹ ์˜ ์ฝ”๋“œ๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์€ clone์ด ์•„๋‹Œ pull ์ด๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค.

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

๊ฐ€๋”์”ฉ ์šฐ๋ฆฌ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆฌ๋‹ค๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ์ฝ”๋“œ๋ถ€๋ถ„์ด ๊ฒน์ณ์„œ ์˜ฌ๋ฆฌ๋‹ค๊ฐ€ ์ถฉ๋Œ(conflict)์ด ์ผ์–ด๋‚˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ ๋˜ํ•œ ์ค‘์•™ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ์šฐ๋ฆฌ์˜ ์ปดํ“จํ„ฐ ( ๋กœ์ปฌ)์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์•™ ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

Git ์„ธ๊ฐ€์ง€ ์Šคํ…

Modified

์ˆ˜์ •์ด ๋œ ์ƒํƒœ

staged

์ค‘๊ฐ„ ์ €์žฅ ์ƒํƒœ
( git add)

commit

๋ฉ”์ธ ๊นƒ ํ—ˆ๋ธŒ์— ์ €์žฅ์ด ๋œ๋‹ค.

์ž‘์—…์„ ๋งŒ๋“ค๊ณ  ๋ฐ”๋กœ ์ปค๋ฐ‹์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์™œ staged๋ผ๋Š” ์ค‘๊ฐ„ ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?
๋ผ๋Š” ์˜๋ฌธ์ ์ด ๋“ค ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ปค๋ฐ‹์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ž‘์—…์ด ๋๋‚ฌ๋‹ค. ์™„์„ฑํ–ˆ๋‹ค๋Š” ์˜๋ฏธ๋กœ ๋ด๋„ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ž‘์—…์„ ํ•˜๋‹ค๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์ค‘๊ฐ„ ์ €์žฅ์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ˆ˜์ •ํ•œ ๋‚ด์šฉ์„ ๋˜๋Œ๋ฆฌ๊ฑฐ๋‚˜ ํ•˜๋Š” ์ผ์ด ์•„์ฃผ ํž˜๋“ค์–ด ์งˆ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ์ž‘์—…์„ ํ•˜๋‹ค๊ฐ€ ๋‚ ๋ผ๊ฐˆ๊ฒƒ์„ ๋Œ€๋น„ํ•ด์„œ ์Šต๊ด€์ ์œผ๋กœ control s๋กœ ์ €์žฅ์„ ํ•˜๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€์ธ ๊ฒƒ์ด์ฃ .

Basic Git Command

๋ชจ๋“  ์ปค๋งจ๋“œ ๋ผ์ธ์—๋Š” git์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

git init

์ด ํŒŒ์ผ์„ ๊นƒ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

git add

์ค‘๊ฐ„ ์ €์žฅ (staged)

git status

git diff
์ˆ˜์ •ํ•œ ๋‚ด์—ญ์„ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ (modified ์ผ๋•Œ๋งŒ ๋ณผ ์ˆ˜ ์žˆ์Œ)

git status

์–ด๋–ค ํŒŒ์ผ์„ ์“ฐ๊ณ  ์žˆ๋Š”์ง€ ์–ด๋–ค๊ฑธ ๋ธŒ๋žœ์น˜ ํ–ˆ๋Š”์ง€

git log

์ˆ˜์ •ํ•œ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ

git rm

์‚ญ์ œํ•˜๊ธฐ

git mv

์›€์ง์ด๊ฑฐ๋‚˜ ๊ฒฝ๋กœ๋ฅผ ๋ฐ”๊ฟ€๋•Œ

-Branch Merging

Branch Merging

๊นƒ์€ ํŠธ๋ฆฌ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋“ ๊ฒƒ์˜ ๊ธฐ์ค€์ด ๋˜๋Š” ๊ธฐ๋‘ฅ์ด ๋ฐ”๋กœ master ์ด๋ฉฐ, branch๋Š” ๊ทธ ๊ธฐ๋‘ฅ์œผ๋กœ ๋ถ€ํ„ฐ ๋ป—์–ด์„œ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด์ฃ . branch ํ•œ๋‹ค๋Š” ๊ฒƒ์€ master์—์„œ ํ•˜๋‚˜๋ฅผ ๋”ฐ๋Š” ๊ฒƒ์ด๋ผ๊ณ ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ณดํ†ต ์ž‘์—…์„ ํ• ๋•Œ master์—์„œ ์ž‘์—…์„ ํ•˜์ง€ ์•Š๊ณ  branch๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฑฐ๊ธฐ์—์„œ ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์™œ branch๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฑฐ๊ธฐ์„œ ์ž‘์—…์„ ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ์š”?
์šฐ๋ฆฌ๊ฐ€ ํ˜‘์—…์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์ˆ˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ž‘์—…์„ ํ•˜๊ณ  ์ˆ˜์ •์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ทธ ๊ธฐ์ค€์ด ๋˜๋Š” master๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ˆ˜์ •์„ ํ•˜๊ณ  ์ปค๋ฐ‹์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๊ทธ ์ค‘์‹ฌ์ด ๋˜๋Š” ๊ฒƒ์— ๊ณ„์†ํ•ด์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ƒ๊ธฐ๊ณ  ๊ทธ๋Ÿฌ๋ฉด ๋‹ค๋ฅธ ๊ธฐ์กด์˜ ๊ฒƒ๋“ค์— ์˜ํ–ฅ์ด ๊ฐ€๊ฒ ์ฃ . ๋‚˜๋Š” ์•„์ง ์ž‘์—…์„ ๋งˆ์น˜์ง€ ์•Š์•˜๋Š”๋ฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด master์— ์ปค๋ฐ‹์„ ํ•ด๋ฒ„๋ฆฐ๋‹ค๋ฉด ๋‚ด ์ž‘์—…์— ์˜ํ–ฅ์ด ๊ฐˆ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ master์—์„œ branch๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค๊ณ  ๊ทธ branch๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ณดํ†ต์€ ์ž‘์—…์„ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด์„œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด์„œ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๊ณ  ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์„ feature branch ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
feature(๊ธฐ๋Šฅ)๋ณ„๋กœ ์ž‘์—…์„ ํ•œ ํ›„์—๋Š” ๋‹ค์‹œ master ์— ์˜ฌ๋ ค์„œ ์›๋ž˜์˜ ๊ฒƒ๋“ค๊ณผ ํ•จ๊ป˜ ํ•ฉ์น˜๊ฒ ์ฃ ? ์ด๋•Œ์˜ ์ž‘์—…์„ Merging, ํ•ฉ์นœ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ merging ๋˜ํ•œ ์ค‘์•™ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ์šฐ๋ฆฌ์˜ ์ปดํ“จํ„ฐ์—์„œ ์ผ์–ด๋‚˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํ•ฉ์นœ๋‹ค๋Š” ๊ฒƒ์€ 1 + 1 = 2 ์™€ ๊ฐ™์€ ๋”ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ฎ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ํ•œ ์ž‘์—…์—์„œ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์ด ์ผ์–ด๋‚œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”? ์ด์™€ ๊ฐ™์ด ๊ฐ™์€ ์ˆ˜์ • ์‚ฌํ•ญ๋•Œ๋ฌธ์— ์ฝ”๋“œ๊ฐ€ ์ถฉ๋Œํ•˜๋Š” ์ƒํ™ฉ์„ conflict ๋˜์—ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊นƒ์€ ์ด ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์•Œ๋ ค์ฃผ๋ฉฐ ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€ ๋ฌผ์–ด๋ด…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๊ทธ ๋ถ€๋ถ„์„ ๋ณด๋ฉด์„œ ์ƒ๋Œ€๋ฐฉ๊ณผ ํ•จ๊ป˜ ์ˆ˜์ •์„ ํ•ด์•ผ ํ•˜์ฃ . ์ด๊ฒƒ์„ conflict ์ด ๋‚œ ๊ฒƒ์„ ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ถฉ๋Œ์ด ๋‚˜๋Š” ๊ฒƒ์€ Pull์„ ํ•˜๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ˆ˜์ • ์‚ฌํ•ญ์„ ์˜ฌ๋ฆด๋•Œ pull์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์น˜ ๋ธŒ๋žœ์น˜๊ฐ€ ์ด๋ ‡๊ฒŒ ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ฃ . "์•ผ ์šฐ๋ฆฌ ์ด๊ฑฐ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ์œผ๋‹ˆ๊นŒ ์ตœ์‹  ์ฝ”๋“œ pullํ•ด์„œ ๊ทธ๊ฑฐ ํฌํ•จํ•œ ๋‹ค์Œ์— push ํ•ด์ค˜"
๊ทธ๋ž˜์„œ ์ตœ์‹  ์ฝ”๋“œ๋ฅผ pull์„ ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ๊ทธ ์ตœ์‹  ์ฝ”๋“œ์— ๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ํŒŒ์ผ๊ณผ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด conflict ์ธ ๊ฒƒ์ด์ฃ .

master branch์— commit์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํšŒ์‚ฌ์— ํ•ต์‹ฌ ์—ญํ• ์„ ํ•˜๋Š” ์ฝ”๋“œ์— ๋‚˜์˜ ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฑ…์ž„๊ฐ์ด ๋”ฐ๋ฅด๋Š” ํ–‰๋™์ž…๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํŒŒ์ผ๋“ค๋งŒ ์˜ฌ๋ฆฐ๊ฒŒ ๋งž๋Š”์ง€. ์ž˜ ๋Œ์•„๊ฐ€๋Š”์ง€. ํ•˜๋Š” ๊ฒƒ๋“ค์„ ์ž˜ ์ฒดํฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ๋งŒ์•ฝ ์˜ฌ๋ฆฌ๊ณ  ์‹ถ์ง€ ์•Š๊ฑฐ๋‚˜ ์˜ฌ๋ผ๊ฐ€๋ฉด ์•ˆ๋˜๋Š” ํŒŒ์ผ๋“ค์€ gitignore ์ด๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ํ•œ ์‚ฌ์ดํŠธ(https://www.linuxnix.com/what-are-the-top-version-control-systems/)

profile
๋‚˜๋Š”์•ผ ์ฝ”๋ฆฐ์ด ํ•˜์ง€๋งŒ ๋ฌด๋Ÿญ๋ฌด๋Ÿญ ์ž๋ผ๊ณ  ์žˆ์ฃ 

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