๐Ÿ“

4. Branch

1. Branch ์‚ฌ์šฉํ•˜๊ธฐ

๊ฐœ๋ฐœ ์ž‘์—…์„ ํ•  ๋•Œ, ๊ฐœ๋ฐœ์ž๋“ค์€ ์ž‘์—… ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ด€์„ฑ์ด ์—†๋Š” ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ํ•  ๋•Œ ์–ด๋–ค ๊ฐœ๋ฐœ์ž๋Š” A ๊ธฐ๋Šฅ์„ ์ž‘์—…ํ•˜๊ณ  ๋˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋Š” B ๊ธฐ๋Šฅ์„ ๋งก์•„ ์ž‘์—…ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๋งŒ์•ฝ A ์ž‘์—…์ด ๋‹ค ๋๋‚œ ๋’ค์— B ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋ฉด ์—ฐ๊ด€์„ฑ์ด ์—†๋Š” ๊ธฐ๋Šฅ ๋‹จ์œ„์˜ ์ž‘์—…์„ ๋น„ํšจ์œจ์ ์œผ๋กœ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณ„๋„๋กœ ์ž‘์—…ํ•˜์—ฌ ํ•ฉ์น˜๋Š” ๋ฐฉ์•ˆ์ด ๊ฐ€์žฅ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Git์—์„œ๋Š” ๋ธŒ๋žœ์น˜์™€ ๋จธ์ง€๋ผ๋Š” ๋ช…๋ น์œผ๋กœ ์ด๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
๋ธŒ๋žœ์น˜๋Š” ๋…๋ฆฝ์ ์ธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. A ๊ธฐ๋Šฅ์„ A ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•˜๊ณ , B ๊ธฐ๋Šฅ์„ B ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•˜๋ฉด, ์„œ๋กœ ๋‹ค๋ฅธ ๋…๋ฆฝ์ ์ธ ๊ณต๊ฐ„์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ์—๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์ธ ์ž‘์—… ๊ณต๊ฐ„์˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•œ ๊ฐœ๋ณ„์ ์ธ ์ž‘์—… ๊ณต๊ฐ„์„ ๋งŒ๋“ค๊ณ  ๊ฑฐ๊ธฐ์„œ ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ, ์ฝ”๋“œ๋ฅผ ํ•ฉ์น˜๋ฉด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฆฌ๋Š” ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์ค‘์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ฆฌ1, ๊ฐœ๋ฆฌ2, ๊ฐœ๋ฆฌ3 ์ด๋ผ๋Š” ์ปค๋ฐ‹์„ ๋‚จ๊ธฐ๊ณ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น™ํ‚ค๋Š” ๊ฐœ๋ฆฌ์˜ ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๋ คํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฆฌ๊ฐ€ ์ž‘์—…์„ํ•˜๋˜ ๋‚ด์—ญ์„ ๊ธฐ๋ณธ๋ธŒ๋žœ์น˜์—์„œ pull๋ฐ›๊ณ  ๊ฐœ๋ฆฌ3์„ ์ปค๋ฐ‹ํ•œ ๋ถ€๋ถ„์—์„œ ์ž‘์—… ๊ณต๊ฐ„์„ ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋น™ํ‚ค๋Š” ์ด์ œ ๋ถ„๋ฆฌ๋œ ์ž‘์—…๊ณต๊ฐ„(๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜)์—์„œ ์ž์‹ ์˜ ์ปค๋ฐ‹์„ ๋‚จ๊ธฐ๋ฉฐ ์ž‘์—…์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
ย 
๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋กœ ๋ฐ”๋กœ ์ปค๋ฐ‹์„ ๋‚ ๋ฆด ์ˆ˜ ์žˆ๊ณ  ์ฝ”๋“œ๋ฅผ ๋ณ‘ํ•ฉ(merge)ํ•˜๊ณ  ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋žœ์น˜๋กœ ์ž‘์—…์„ ํ•˜๋ฉด ๋ธŒ๋žœ์น˜ ๋‹จ์œ„๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜๋Š” ์ผ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค.
๐Ÿ’ก
๋งŒ์•ฝ ์„œ๋กœ ๊ฐ™์€ ๋ถ€๋ถ„์„ ๋‹ค๋ฅด๊ฒŒ ์ˆ˜์ •ํ•˜์—ฌ ํ•ฉ์น˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์ถฉ๋Œ์ด ๋‚ฉ๋‹ˆ๋‹ค! ์ถฉ๋Œ์ด ๋‚˜๋ฉด ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋ผ๋Š” ์„ ํƒ์ด ๋œจ์ฃ . ๊ฑฑ์ •ํ•˜์ง€ ์•Š์œผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค. ๋˜๋Œ๋ฆด ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ๊นŒ์š”.
ย 
git์—์„œ์˜ ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋Š” master ๋ธŒ๋žœ์น˜(GitHub์€ main) ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๋ธŒ๋žœ์น˜๋Š” git ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋•Œ, 'HEAD'๋ผ๋Š” ํŠน์ˆ˜ํ•œ ํฌ์ธํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํฌ์ธํ„ฐ๋Š” ์ง€๊ธˆ ์ž‘์—… ์ค‘์ธ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
ย 
๐Ÿ’ก
ํ•ด๋‹น ์ฑ…์—์„œ ๋‚˜์˜ค๋Š” ์˜ˆ์‹œ์—์„œ main ๋ธŒ๋žœ์น˜ ๋˜๋Š” master ๋ธŒ๋žœ์น˜๋Š” ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. master๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๋…ธ์˜ˆ์ œ๋ฅผ ๋– ์˜ฌ๋ฆฌ๊ฒŒ ํ•œ๋‹ค๋Š” ์ด์œ ๋กœ ๋งŽ์€ ์ฝ”๋“œ์—์„œ master ๋Œ€์‹  main์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. git config --global init.defaultBranch main ๋ช…๋ น์„ ํ†ตํ•ด git์—์„œ๋„ GitHub์ฒ˜๋Ÿผ ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋ฅผ main์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜๋ฉด ํŠน์ • ๋ธŒ๋žœ์น˜์˜ ๋‚ด์šฉ๋“ค์„ main ๋ธŒ๋žœ์น˜์— ํ•ฉ์นฉ๋‹ˆ๋‹ค. ๋˜ ์ƒˆ๋กœ์šด ์ž‘์—…์„ ํ•˜๋ ค๊ณ  ํ•˜๋ฉด main ๋ธŒ๋žœ์น˜์—์„œ ๋‹ค์‹œ ์ƒˆ๋กœ์šด feature ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค.
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
ย 
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
ํŠน์ • ๊ธฐ๋Šฅ์„ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๊ธ‰ํ•˜๊ฒŒ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ํ˜„์žฌ์˜ ์ž‘์—… ์ƒํƒœ๋ฅผ ์ž„์‹œ๋กœ ์ปค๋ฐ‹ํ•ด๋‘๊ณ  ์ด์ „ ๊ธฐ๋Šฅ ์ž‘์—… ์ค‘์ธ ์ƒํƒœ๋กœ ๋ธŒ๋žœ์น˜(์ž‘์—…ํด๋”)๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฒ„๊ทธ ํŒจ์น˜์šฉ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๊ณ  ์ˆ˜์ • ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๋ฒ„๊ทธ ํŒจ์น˜์šฉ ๋ธŒ๋žœ์น˜์˜ ์ถ”๊ฐ€๋œ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ main ๋ธŒ๋žœ์น˜์— ํ•ฉ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด main ๋ธŒ๋žœ์น˜๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋ฐฐํฌํ•œ ์†Œ์Šค์ฝ”๋“œ์˜ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
ย 
์ง€๊ธˆ๋ถ€ํ„ฐ ๋ธŒ๋žœ์น˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก๊ณผ ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ํ™•์ธ
    • $ git branch
      ย 
      ์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
      ์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
      ย 
      ๊ฐœ๋ฆฌ1, ๊ฐœ๋ฆฌ 2, ๊ฐœ๋ฆฌ 3, ๊ฐœ๋ฆฌ 4๋Š” ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฆฌ 4๊ฐ€ ๋‹ด๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์ด ๊ฐ€์žฅ ์ตœ์‹ ์˜ ์ƒํƒœ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. HEAD ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ธŒ๋žœ์น˜๊ฐ€ main์ด๊ธฐ ๋•Œ๋ฌธ์— $ git branch๋ฅผ ํ•˜๋ฉด * main๊ฐ€ ์ถœ๋ ฅ ๋ฉ๋‹ˆ๋‹ค.
ย 
  • branch ๋งŒ๋“ค๊ธฐ ๋ธŒ๋žœ์น˜๋ฅผ ํ˜„์žฌ ์‹œ์ ์— ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Gary ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.
    • $ git branch Gary
      $ git branch Gary main #์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ main์—์„œ ํŒŒ์ƒ๋˜๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
      ย 
      ์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
      ์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub

1.1 ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜(main, master)

์•ž์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ, git์—์„œ์˜ ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋Š” master์ด๊ณ  GitHub์—์„œ์˜ ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋Š” main์ž…๋‹ˆ๋‹ค.
git init ๋ช…๋ น์„ ํ†ตํ•ด ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ •(ํ•ด๋‹น ์ฑ•ํ„ฐ์—์„œ ์ง„ํ–‰ํ•˜๋Š” ๊ณผ์ •)์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋Š” master๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์•ž์— ์–ธ๊ธ‰๋œ ๋ช…๋ น์–ด git config --global init.defaultBranch main ๋กœ ์„ค์น˜ ์‹œ ๋˜๋Š” ์„ค์น˜ ํ›„ ์„ค์ •์„ ํ†ตํ•ด ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊นƒํ—ˆ๋ธŒ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ดˆ๊ธฐํ™” ์„ค์ •์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๋”ฐ๋ผ ์ง„ํ–‰ํ•œ๋‹ค๋ฉด ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๊ฐ€ main์ด ๋ฉ๋‹ˆ๋‹ค.
README.md file ์ดˆ๊ธฐ์„ธํŒ…README.md file ์ดˆ๊ธฐ์„ธํŒ…
README.md file ์ดˆ๊ธฐ์„ธํŒ…
git-hub ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์—ฐ๊ฒฐ ๊ฐ€์ด๋“œ๋ผ์ธgit-hub ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์—ฐ๊ฒฐ ๊ฐ€์ด๋“œ๋ผ์ธ
git-hub ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์—ฐ๊ฒฐ ๊ฐ€์ด๋“œ๋ผ์ธ
ย 

2. Branch ์ด๋™/๋ณ€๊ฒฝ, ํŒŒ์ผ ๋ณต์›ํ•˜๊ธฐ

2.1. checkout

checkout์€ ๋ธŒ๋žœ์น˜ ๋ณ€๊ฒฝ ๋˜๋Š” ์ž‘์—… ํŠธ๋ฆฌ ํŒŒ์ผ ๋ณต์›์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ์กด์˜ checkout์ด ๊ฐ€์ง„ ๊ธฐ๋Šฅ์ด ๋„ˆ๋ฌด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— Git 2.23์—์„œ checkout์„ ๋Œ€์‹ ํ•ด switch์™€ restore๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
ย 
checkout์„ ํ†ตํ•ด ๋ธŒ๋žœ์น˜๋ฅผ ์ด๋™ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธํ…” ์ฒดํฌ์•„์›ƒ์„ ์ƒ๊ฐํ•˜์…”์„œ ๋ธŒ๋žœ์น˜๋ฅผ ๋– ๋‚œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•  ๋ธŒ๋žœ์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด checkout์ž…๋‹ˆ๋‹ค. checkout์„ ์‚ฌ์šฉํ•ด Gary ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•ด๋ด…์‹œ๋‹ค.
$ git checkout Gary
ย 
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
ย 
์ƒˆ๋กœ์šด ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ปค๋ฐ‹ํ•ด๋ด…์‹œ๋‹ค.
$ echo 'hello branch' >> branch.txt $ git status $ git add branch.txt $ git commit -m "๊ฐœ๋ฆฌ 5"
ย 
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
ย 
์ƒ๋Œ€๋ฐฉ์ด ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ pull์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
$ git pull
ย 
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
ย 
์ƒ๋Œ€๋ฐฉ์ด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ปค๋ฐ‹์„ ํ•œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
$ git checkout main $ git branch binky $ git checkout binky $ git commit -m "๋น™ํ‚ค 1"
ย 
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
๐Ÿ’ก
git log --all --decorate --oneline --graph ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ์ปด๋ฐ‹์„ ๊ทธ๋ž˜ํ”„๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
push๋ฅผ ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์• ๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.
notion imagenotion image
ย 
git push๋ฅผ ํ•˜๋‹ˆ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” upstream ๋ธŒ๋žœ์น˜๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— git push --set-upstream origin branch_name ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ช…๋ น์–ด ์ดํ›„๋ถ€ํ„ฐ๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์— Binky์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด push ํ•˜๊ฒ ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
notion imagenotion image
ย 
๐Ÿ’ก
git push vs git push <์›๊ฒฉ์ €์žฅ์†Œ๋ช…> <๋ธŒ๋žœ์น˜๋ช…> ์™œ git push origin main์ผ๊นŒ์š”? ๊ทธ๋ƒฅ git pushํ•˜๋ฉด ์•ˆ๋˜๋‚˜์š”? ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
git push <์›๊ฒฉ์ €์žฅ์†Œ๋ช…> <๋ธŒ๋žœ์น˜๋ช…> ๋Š” ์–ด๋Š ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์–ด๋Š ๋ธŒ๋žœ์น˜์— pushํ•  ์ง€ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
git push ๋Š” ํ•  ๋•Œ์—๋Š” ์ด๋ฏธ ์—ฐ๊ฒฐ๋œ ๊ณณ์— pushํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์›๊ฒฉ ์ €์žฅ์†Œ์— ํ•ด๋‹น ๋ธŒ๋žœ์น˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” git push -u origin <๋ธŒ๋žœ์น˜๋ช…> ์„ ์‹คํ–‰ํ•ด์ฃผ์…”์•ผ ์ดํ›„์— ๊ฐ„๋‹จํžˆ pushํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -u ์˜ต์…˜์ด --set-upstream ์ž…๋‹ˆ๋‹ค.
  • ์—ฌ๊ธฐ์„œ origin์€ ํ‚ค์›Œ๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. one, two๋“ฑ์— ์ด๋ฆ„์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ด๋Š” ์—ฌ๋Ÿฌ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ์œ„ ๋‚ด์šฉ์— ์ด์–ด main์ด ์–ด๋Š ์›๊ฒฉ ์ €์žฅ์†Œ(GitHub์ธ์ง€ GitLab์ธ์ง€ ๋˜๋Š” ๊ทธ ์™ธ์ธ์ง€)์˜ main์ธ์ง€ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์„ค์ •ํ•ด์ฃผ๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค.
ย 

2.2. switch

๋ธŒ๋žœ์น˜๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
$ git switch Gary
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
ย 
๋ธŒ๋žœ์น˜๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
$ git switch -c Gary
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
ย 

2.3. restore

restore๋Š” ํŒŒ์ผ์˜ ์ˆ˜์ • ๋‚ด์šฉ ๋ณต์›๊ณผ add ๋ฅผ ํ†ตํ•ด ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ฆฐ ํŒŒ์ผ์„ ๋นผ๋‚ผ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
ย 
์šฐ์„  ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ ํ›„ ์ปค๋ฐ‹์„ ํ•ฉ๋‹ˆ๋‹ค.
$ touch README.md $ vi README.md //i->์ž‘์„ฑ ํ›„->Esc->:wq $ git add . $ git commit -m "add file" $ git status
notion imagenotion image
ย 
์ดํ›„ ํ•ด๋‹น ํŒŒ์ผ์„ ์ˆ˜์ •ํ•œ ํ›„์— ์ €์žฅ์„ ํ•˜๊ณ  ์ƒํƒœ๋ฅผ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ์ง„ํ–‰ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
1) ์•„๋ž˜์˜ ๋ช…๋ น์–ด ์ž…๋ ฅ
$ vi README.md
2) ์•„๋ž˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ˆœ์ฐจ์ ์œผ๋กœ ํŽธ์ง‘
i -> ์ˆ˜์ • ํ›„ -> Esc -> :wq
ย 
modified ํŒŒ์ผ์ด ์žˆ๋‹ค๊ณ  ๋‚˜์˜จ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
notion imagenotion image
ย 
์ด๋•Œ, ํŒŒ์ผ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ modified ํŒŒ์ผ์—์„œ unmodified ํŒŒ์ผ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
1) restore์„ ์ด์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋˜๋Œ๋ฆฌ๊ธฐ
$ git restore README.md
ย 
2) checkout์„ ์ด์šฉํ•˜์—ฌ ํŒŒ์ผ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ๋˜๋Œ๋ฆฌ๊ธฐ
git checkoutโ€‰-- filenameย ์€ ํ•ด๋‹น ํŒŒ์ผ ๋‚ด์šฉ์ด ์ตœ์‹  ์ปค๋ฐ‹ ์ „์œผ๋กœ ๋Œ์•„๊ฐ€๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, checkout์œผ๋กœ ์ง€์›Œ์ง„ ๋‚ด์šฉ์€ ์ปค๋ฐ‹์„ ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
$ git checkout -- README.md
ย 
modified ํŒŒ์ผ์ด ์—†๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
notion imagenotion image
ย 
ํŒŒ์ผ์„ ์—ด์–ด ํ™•์ธํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.
hello world Byebye
checkout โ€” filename ์ „
hello world
checkout โ€” filename ํ›„
ย 
์Šคํ…Œ์ด์ง€ ์˜ฌ๋ฆฐ ๊ฒƒ์„ ๋นผ๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
$ git add . $ git status
notion imagenotion image
ย 
1) restore ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋นผ๊ธฐ
$ git restore --staged README.md
ย 
2) reset ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋นผ๊ธฐ
$ git reset HEAD README.md
notion imagenotion image
ย 
์ƒํƒœ๋ฅผ ํ™•์ธํ•ด ๋ณด๋ฉด ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ผ๊ฐ€ ์žˆ์ง€ ์•Š์€ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
notion imagenotion image
ย 

3. Branch ์‚ญ์ œ/๋ณต๊ตฌํ•˜๊ธฐ

3.1. branch ์‚ญ์ œ

ํŠน์ • ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด ์ž…๋‹ˆ๋‹ค.
$ git branch -D <์‚ญ์ œํ•  ๋ธŒ๋žœ์น˜๋ช…>
ย 
Gary ๋ธŒ๋žœ์น˜๋ฅผ git branch -D Gary ๋ช…๋ น์–ด๋กœ ์‚ญ์ œํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
notion imagenotion image
ย 
์‚ญ์ œํ•œ ๋’ค, git branch ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•˜์—ฌ ์ œ๋Œ€๋กœ ์‚ญ์ œํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก์— main๋งŒ ์žˆ์œผ๋ฏ€๋กœ Gary ๋ธŒ๋žœ์น˜๊ฐ€ ์‚ญ์ œ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
notion imagenotion image

3.2. branch ๋ณต๊ตฌ

์‚ญ์ œํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ์€ 2๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ ์„œ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
1๋‹จ๊ณ„. git reflog๋กœ ๋ณต๊ตฌ ์‹œ์  ํ™•์ธ
๋จผ์ €, ์‚ญ์ œํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ์–ด๋–ค ์‹œ์ ์œผ๋กœ ๋ณต๊ตฌํ•  ๊ฒƒ์ธ์ง€ ์•Œ์•„์•ผ๊ฒ ์ฃ . ์‚ญ์ œํ•œ ๋ธŒ๋žœ์น˜๊ฐ€ ๋‚จ๊ฒผ์—ˆ๋˜ ์ปค๋ฐ‹ ์ค‘ ์–ด๋–ค ์ƒํƒœ๋กœ ๋Œ์•„๊ฐˆ ์ง€๋ฅผ ์ฐพ์•„์„œ ์ปค๋ฐ‹ ํ•ด์‹œ๊ฐ’์„ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ ๋ชจ๋“  ์ฐธ์กฐ ๋ชฉ๋ก์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋Š” git reflog๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
$ git reflog
ย 
reflog๋Š” ๋ชจ๋“  ์ฐธ์กฐ ๋‚ด์—ญ๋“ค์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. main ๋ธŒ๋žœ์น˜์—์„œ ์–ด๋–ค ๋ธŒ๋žœ์น˜๋กœ ์ฐธ์กฐ๋ฅผ ํ–ˆ๋Š”์ง€, ์–ด๋–ค ์ปค๋ฐ‹์„ ๋‚ ๋ ธ๋Š”์ง€ ๋“ฑ ๋ชจ๋“  ๋‚ด์—ญ๋“ค์„ git reflog๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
Gary ๋ธŒ๋žœ์น˜๋ฅผ git branch -D Gary ๋ช…๋ น์–ด๋กœ ์‚ญ์ œ ํ•œ ๋’ค, ๋ณต๊ตฌ ์‹œ์ผœ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
notion imagenotion image
ย 
git reflog ๋ฅผ ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐธ์กฐ ๋ชฉ๋ก๋“ค์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Gary ๋ธŒ๋žœ์น˜๊ฐ€ Gary- 1 ๋ฒˆ์งธ ์ปค๋ฐ‹ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ๋‚ ๋ ธ๋˜ ์‹œ์ ์œผ๋กœ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ HEAD๊ฐ€ ๊ฐ€๋ฆฌํ‚จ ์‹œ์ ์˜ ํ•ด์‹œ ๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
notion imagenotion image
ย 
2๋‹จ๊ณ„. git checkout์œผ๋กœ ๋ธŒ๋žœ์น˜ ๋ณต๊ตฌ
๋ธŒ๋žœ์น˜๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
$ git checkout -b <์‚ญ์ œํ•œ ๋ธŒ๋žœ์น˜๋ช…> <์ปค๋ฐ‹ ํ•ด์‹œ๊ฐ’>
ย 
git reflog๋กœ ์‚ญ์ œํ•œ ๋ธŒ๋žœ์น˜์˜ ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹ ํ•ด์‹œ๊ฐ’์„ ํ™•์ธํ•œ ๋’ค, ์ด๋ฅผ ์ด์šฉํ•ด์„œ ๋ธŒ๋žœ์น˜๋ฅผ ๋ณต๊ตฌ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
notion imagenotion image
ย 
์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด Gary ๋ธŒ๋žœ์น˜๋กœ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

4. merge(ํ•ฉ๋ณ‘)ํ•˜๊ธฐ

์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
ย 
๋‘ branch๋กœ ๋‚˜๋ˆ„์–ด ์ž‘์—…ํ–ˆ๋˜ ๊ฒƒ์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.
$ git checkout main $ git log $ git merge binky $ git log
ย 
merge๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด push ๊นŒ์ง€ ํ•ด์ฃผ์…”์•ผ ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋ฐ˜์˜์ด ๋ฉ๋‹ˆ๋‹ค.
$ git push origin main
ย 
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
ย 
์œ„์— binky ๋ธŒ๋žœ์น˜๋ฅผ mergeํ•œ ํ›„์— gary์˜ ๋ธŒ๋žœ์น˜๋ฅผ mergeํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ, ๋‘ ๋ธŒ๋žœ์น˜๊ฐ€ ๊ฐ™์€ ๊ณณ์„ ์ˆ˜์ •ํ–ˆ๋‹ค๋ฉด ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜์ง€๋งŒ ์ง€๊ธˆ์€ ๋‹ค๋ฅธ ๊ณณ์„ ์ˆ˜์ •ํ–ˆ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ์ง„ํ–‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
$ git merge Gary $ git push origin main
ย 
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
์•Œ์ž˜๋”ฑ๊น”์„ผ GitHub
ย 

5. conflict (์ถฉ๋Œ)

๊ฐœ๋ฆฌ ๋ธŒ๋žœ์น˜์™€ main ๋ธŒ๋žœ์น˜ ๋‘˜ ๋‹ค README.md์—์„œ ์ž‘์—…์„ ํ•˜๋Š”๋ฐ ์„œ๋กœ ๋ณ€๊ฒฝ ๋‚ด์—ญ์ด ๋‹ค๋ฅด๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์ด๋•Œ, ๊ฐœ๋ฆฌ ๋ธŒ๋žœ์น˜์™€ main ๋ธŒ๋žœ์น˜์˜ ์ž‘์—…๋‚ด์—ญ์ž…๋‹ˆ๋‹ค.
hello world hello Gary
Gary๋ธŒ๋žœ์น˜
hello world hello binky
main ๋ธŒ๋žœ์น˜
mergeํ•  ๋•Œ ๋‘ ๋ธŒ๋žœ์น˜๊ฐ€ ๊ฐ™์€ ๊ณณ์„ ์ˆ˜์ •ํ–ˆ๋‹ค๋ฉด ์ถฉ๋Œ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ถฉ๋Œ๋‚œ ์‹œ์ ์„ ์ฐพ์•„ ์ˆ˜๋™์œผ๋กœ ๊ณ ์ณ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
<<<<<<< HEAD (Current Change) hello world hello binky ======= >>>>>>> branchName (Incoming Change) hello world hello Gary
ย 
conflict๋Š” ๋‘๊ฐ€์ง€ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ๋น„๊ตํ•œ ๋‹ค์Œ์— ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋‚จ๊ธฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
hello world hello binky Gary
ย 
์ดํ›„ add > commit > push ๋ฅผ ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
ย 

5.1 VSC์—์„œ conflict (์ถฉ๋Œ) ํ•ด๊ฒฐํ•˜๊ธฐ

visual studio code์—์„œ๋Š” ์ถฉ๋Œ์— ๋Œ€ํ•ด ์ข€ ๋” ์ž๋™ํ™”๋œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์•„๋ž˜์™€ ๊ฐ™์ด ์ถฉ๋Œ์ด ๋‚ฌ์„ ๋•Œ ํ˜„์žฌ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ• ์ง€, ๋จธ์ง€๋œ ์ฝ”๋“œ๋ฅผ ๋ฐ˜์˜ํ• ์ง€ ํด๋ฆญ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
notion imagenotion image

5.2 conflict ์‹ค์Šต ์ „์ฒด ์ฝ”๋“œ

  • ๋ฌธ์ œ
    • main branch : -readme ํŒŒ์ผ 'hello world' a branch : - readme ํŒŒ์ผ 'hello a' ์ˆ˜์ • - aํด๋” > a.txt(hello1) ์ƒ์„ฑ b branch : - readme ํŒŒ์ผ 'hello b' ์ˆ˜์ • - bํด๋” > b.txt(hello2) ์ƒ์„ฑ 2๊ฐœ๋ฅผ merge, ์ถฉ๋Œ ํ•ด๊ฒฐ
  • ๋ช…๋ น์–ด
    • ########## master branch ########## git init echo 'hello world' >> README.md git add . git commit -m '1' git branch a git branch b ########## a branch ########## git checkout a # ๋ฉ”๋ชจ์žฅ์œผ๋กœ hello a๋กœ ์ˆ˜์ • ํ›„ ์ €์žฅ mkdir a cd a touch a.txt cd .. git add . git commit -m '2' ########## b branch ########## git checkout b # ๋ฉ”๋ชจ์žฅ์œผ๋กœ hello b๋กœ ์ˆ˜์ • ํ›„ ์ €์žฅ mkdir b cd b touch b.txt cd .. git add . git commit -m '3' ########## master branch ########## git checkout master git merge a git merge b # ์ถฉ๋Œ ๋ฐœ์ƒ, VSC์—์„œ ํ•ด๊ฒฐํ•ด๋ณด์„ธ์š”.
๐Ÿ’ก
VSC์—์„œ git bash ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋””ํดํŠธ๋กœ ์„ค์ •ํ•˜๊ธฐ
    • Window VSC์—์„œ Ctrl + Shift + P Mac VSC์—์„œ cmd + shift p Select Default Profile ์ž…๋ ฅ ํ›„ ์„ ํƒ Git Bash ์„ ํƒ
  • +๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ git bash๋กœ ์—ด๊ธฐ
    • notion imagenotion image
      ย