[Git] Git์„ ์–ด๋–ป๊ฒŒ ํ•ฉ์น˜์ง€? : Git Merging

Posted by Euisuk's Dev Log on February 28, 2024

[Git] Git์„ ์–ด๋–ป๊ฒŒ ํ•ฉ์น˜์ง€? : Git Merging

์›๋ณธ ๊ฒŒ์‹œ๊ธ€: https://velog.io/@euisuk-chung/๊นƒ-๋จธ์ง•๊ณผ-ํŒจ์ŠคํŠธํฌ์›Œ๋”ฉ-์ดํ•ด์™€-ํ™œ์šฉ

๊นƒ(Git)์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์‹œ์— ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•  ๋•Œ, ์ด๋“ค์˜ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊นƒ์˜ ๋จธ์ง•(merging)๊ณผ ํŒจ์ŠคํŠธํฌ์›Œ๋”ฉ(fast-forwarding) ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

์ด ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ์—์„œ๋Š” ๋จธ์ง•๊ณผ ํŒจ์ŠคํŠธํฌ์›Œ๋”ฉ์˜ ๊ฐœ๋…์„ ์„ค๋ช…ํ•˜๊ณ , ๋ณดํŽธ์ ์ธ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊นƒ ๋จธ์ง•(Merging)

๋จธ์ง•์€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜๋ฅผ ํ†ตํ•ฉํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํ”ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋ธŒ๋žœ์น˜(feature branch)์—์„œ์˜ ์ž‘์—…์„ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜(main branch)๋กœ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋จธ์ง• ๊ณผ์ •์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นฉ๋‹ˆ๋‹ค:

  1. ๋ชฉํ‘œ ๋ธŒ๋žœ์น˜๋กœ ์ฒดํฌ์•„์›ƒํ•˜๊ธฐ: ๋จธ์ง•ํ•  ๋ชฉํ‘œ ๋ธŒ๋žœ์น˜๋กœ ์ฒดํฌ์•„์›ƒํ•ฉ๋‹ˆ๋‹ค.
    1
    
    git checkout main
    
  2. ๋จธ์ง• ์‹คํ–‰ํ•˜๊ธฐ: ๊ฐœ๋ฐœํ•œ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ๋จธ์ง•ํ•ฉ๋‹ˆ๋‹ค.
    1
    
    git merge feature-branch
    

๋จธ์ง• ๊ณผ์ •์—์„œ ์ถฉ๋Œ(conflict)์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‘ ๋ธŒ๋žœ์น˜์—์„œ ๊ฐ™์€ ํŒŒ์ผ์˜ ๊ฐ™์€ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ–ˆ์„ ๋•Œ ์ฃผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด, ๊นƒ์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๊ณ  ๋จธ์ง•์„ ์™„๋ฃŒํ•  ๊ฒƒ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

ํŒจ์ŠคํŠธํฌ์›Œ๋”ฉ(Fast-Forwarding)

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

ํŒจ์ŠคํŠธํฌ์›Œ๋”ฉ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•˜๊ธฐ: feature-branch์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋กœ ์ฒดํฌ์•„์›ƒํ•˜๊ธฐ: ์ž‘์—…์„ ํ†ตํ•ฉํ•  ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    1
    
    git checkout main
    
  3. ํŒจ์ŠคํŠธํฌ์›Œ๋”ฉ ๋จธ์ง• ์‹คํ–‰ํ•˜๊ธฐ: ๋ฉ”์ธ ๋ธŒ๋žœ์น˜์—์„œ feature-branch์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํŒจ์ŠคํŠธํฌ์›Œ๋“œ ๋ฐฉ์‹์œผ๋กœ ๋จธ์ง•ํ•ฉ๋‹ˆ๋‹ค.

    1
    
    git merge feature-branch
    

ํŒจ์ŠคํŠธํฌ์›Œ๋”ฉ์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ, ๊นƒ์€ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜์˜ ํ—ค๋“œ๋ฅผ feature-branch์˜ ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์ด๋™์‹œํ‚ค๊ณ , ๋ณ„๋„์˜ ๋จธ์ง€ ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์–ด ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

git fetch๋ž€?

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

์‚ฌ์šฉ๋ฒ•

git fetch ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

1
git fetch origin

์—ฌ๊ธฐ์„œ origin์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •๋œ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ origin์—์„œ ๋ณ€๊ฒฝ๋œ ๋ชจ๋“  ๋ธŒ๋žœ์น˜ ์ •๋ณด๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜จ ์ •๋ณด๋Š” ๋กœ์ปฌ์˜ ์›๊ฒฉ ์ถ”์  ๋ธŒ๋žœ์น˜์— ์ €์žฅ๋˜๋ฉฐ, ์ด๋Š” origin/main, origin/feature-branch ๋“ฑ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

git fetch ํ›„์˜ ์ž‘์—…

git fetch๋ฅผ ์‹คํ–‰ํ•œ ํ›„, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ์ ์šฉํ•˜๋ ค๋ฉด ์ถ”๊ฐ€์ ์ธ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›๊ฒฉ ์ €์žฅ์†Œ์˜ main ๋ธŒ๋žœ์น˜์—์„œ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์„ ํ˜„์žฌ ์ฒดํฌ์•„์›ƒ๋œ main ๋ธŒ๋žœ์น˜์— ์ ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  1. ๋กœ์ปฌ main ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜ํ•˜๊ธฐ:
    1
    
    git checkout main
    
  2. ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋จธ์ง€ํ•˜๊ธฐ:
    1
    
    git merge origin/main
    

์ด ๊ณผ์ •์€ origin/main์˜ ์ตœ์‹  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋กœ์ปฌ์˜ main ๋ธŒ๋žœ์น˜์— ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค.

git fetch์™€ git pull์˜ ์ฐจ์ด

git fetch์™€ ๋น„์Šทํ•œ ๋ช…๋ น์–ด๋กœ git pull์ด ์žˆ์Šต๋‹ˆ๋‹ค. git pull์€ git fetch๋ฅผ ์‹คํ–‰ํ•œ ํ›„, ๋ฐ”๋กœ git merge๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์›๊ฒฉ ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ์ž๋™์œผ๋กœ ๋จธ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, git pull์€ git fetch ํ›„ git merge๋ฅผ ํ•œ ๋ฒˆ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ตœ์‹  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ์ง€๋งŒ, ์ฆ‰์‹œ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ํ†ตํ•ฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ git fetch๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ˆ˜๋™์œผ๋กœ ๋จธ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒดํฌ์•„์›ƒํ•œ ๋ธŒ๋žœ์น˜๊ฐ€ ์—†๋Š”๋ฐ?!

git fetch origin๊ณผ git checkout -b project1 origin/project1 ๋ช…๋ น์–ด๋Š” ๋‘ ๋‹จ๊ณ„์— ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ์—…๋ฐ์ดํŠธ๋กœ ์ด๋ฅผ ๋ธŒ๋ Œ์น˜๋กœ ์ •์˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๋‹จ๊ณ„์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด์‹œ์ฃ .

1. git fetch origin

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

2. git checkout -b project1 origin/project1

  • ์ด ๋ช…๋ น์–ด๋Š” project1์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๋กœ์ปฌ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ origin/project1 ์›๊ฒฉ ๋ธŒ๋žœ์น˜์˜ ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์„ค์ •ํ•œ ํ›„, ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜(checkout)ํ•ฉ๋‹ˆ๋‹ค.
  • ์—ฌ๊ธฐ์„œ git checkout -b๋Š” ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. project1์€ ์ƒ์„ฑํ•  ์ƒˆ๋กœ์šด ๋กœ์ปฌ ๋ธŒ๋žœ์น˜์˜ ์ด๋ฆ„์ด๋ฉฐ, origin/project1์€ ๋ณต์ œ(clone)ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ(fetch)ํ•  ์›๊ฒฉ ๋ธŒ๋žœ์น˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๊ณผ์ •์€ ํŠนํžˆ ์›๊ฒฉ ์ €์žฅ์†Œ์— ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋œ ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋กœ์ปฌ์—์„œ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ project1์€ ์›๊ฒฉ ๋ธŒ๋žœ์น˜ origin/project1์˜ ์ƒํƒœ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜์˜ํ•˜์—ฌ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์š”์•ฝํ•˜๋ฉด, ์ด ๋‘ ๋ช…๋ น์–ด๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ origin์—์„œ project1 ๋ธŒ๋žœ์น˜์˜ ์ตœ์‹  ์ƒํƒœ๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ๊ฐ€์ ธ์™€(git fetch origin), ๊ทธ ์ƒํƒœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋กœ์ปฌ ๋ธŒ๋žœ์น˜ project1์„ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜(git checkout -b project1 origin/project1)ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ํŠน์ • ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋กœ์ปฌ์—์„œ ์ƒˆ๋กœ์šด ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์„ค๋ช…

git checkout -b ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

git checkout -b ๋ช…๋ น์–ด๋Š” ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ๋ฐ”๋กœ ์ „ํ™˜ํ•˜๋Š” ์ž‘์—…์„ ํ•œ ๋ฒˆ์— ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ํŠนํžˆ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ, ๋ฒ„๊ทธ ์ˆ˜์ •, ์‹คํ—˜์ ์ธ ์‹œ๋„ ๋“ฑ์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์ž‘์—… ๋ธŒ๋žœ์น˜๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. git checkout -b ๋ช…๋ น์–ด์˜ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

1
git checkout -b [์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ์ด๋ฆ„]

์ด ๋ช…๋ น์€ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์˜ ์ƒํƒœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ [์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ์ด๋ฆ„]์œผ๋กœ ๋ช…๋ช…๋œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜(checkout)ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

์˜ˆ๋ฅผ ๋“ค์–ด, ์ƒˆ๋กœ์šด ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด feature-login์ด๋ผ๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ ์ž ํ•  ๋•Œ, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

1
git checkout -b feature-login

์ด ๋ช…๋ น์–ด๋Š” ํ˜„์žฌ ์œ„์น˜ํ•œ ๋ธŒ๋žœ์น˜(์˜ˆ: main ๋˜๋Š” develop)์˜ ์ตœ์‹  ์ƒํƒœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ feature-login ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ž๋™์œผ๋กœ ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ์จ ๊ฐœ๋ฐœ์ž๋Š” ์ƒˆ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ฆ‰์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

git checkout -b์™€ ์›๊ฒฉ ๋ธŒ๋žœ์น˜

git checkout -b ๋ช…๋ น์–ด๋Š” ์›๊ฒฉ ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋กœ์ปฌ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ช…๋ น์–ด ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

1
git checkout -b [์ƒˆ๋กœ์šด ๋กœ์ปฌ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„] origin/[์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„]

์˜ˆ๋ฅผ ๋“ค์–ด, ์›๊ฒฉ ์ €์žฅ์†Œ์— ์žˆ๋Š” feature-login ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋กœ์ปฌ์—์„œ ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

1
git checkout -b feature-login origin/feature-login

์ด๋Š” ์›๊ฒฉ์˜ feature-login ๋ธŒ๋žœ์น˜ ์ƒํƒœ๋ฅผ ๋ณต์ œํ•˜์—ฌ ๋กœ์ปฌ์— feature-login ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.



-->