์ƒˆ์†Œ์‹

๋„์ ๋„์ /Git, Notion, Tistory

[Git ํ˜‘์—…ํ•˜๊ธฐ] Git Branch ๊นƒ ๋ธŒ๋žœ์น˜ ๊ธฐ์ดˆ : ์ƒ์„ฑ๋ถ€ํ„ฐ ๋ณ‘ํ•ฉ๊นŒ์ง€

  • -

  • ๋…๋ฆฝ์ ์ธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„
  • ๊ฐ๊ฐ์˜ ๋ธŒ๋žœ์น˜๋Š” ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Œ
  • ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ง„ํ–‰ ๊ฐ€๋Šฅ

์ €์žฅ์†Œ๋ฅผ ์ฒ˜์Œ ๋งŒ๋“ค๋ฉด, Git์€ ๋ฐ”๋กœ 'main'(ํ˜น์€ master)๋ผ๋Š” ์ด๋ฆ„์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๋‘”๋‹ค. ์ด ์ƒˆ๋กœ์šด ์ €์žฅ์†Œ์— ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ์ถ”๊ฐ€ ํ•œ๋‹ค๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•œ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ทธ ๋‚ด์šฉ์„ ์ €์žฅ(์ปค๋ฐ‹, Commit)ํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋‘ 'main' ๋ผ๋Š” ์ด๋ฆ„์˜ ๋ธŒ๋žœ์น˜๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ๋œ๋‹ค.

'master'๊ฐ€ ์•„๋‹Œ ๋˜ ๋‹ค๋ฅธ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด์„œ '์ด์ œ๋ถ€ํ„ฐ ์ด ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ• ๊ฑฐ์•ผ!'๋ผ๊ณ  ์„ ์–ธ(์ฒดํฌ์•„์›ƒ, checkout)ํ•˜์ง€ ์•Š๋Š” ์ด์ƒ, ์ด ๋•Œ์˜ ๋ชจ๋“  ์ž‘์—…์€ 'master' ๋ธŒ๋žœ์น˜์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค.

 

  • main์—์„œ๋Š” index.html ๋กœ ๋ฉ”์ธํŽ˜์ด์ง€
  • Feature branch์—์„œ๋Š” login.html ๋กœ๊ทธ์ธํŽ˜์ด์ง€
    ์ž‘์—…ํ•˜๊ธฐ

 

3 ๋ธŒ๋žœ์น˜ ํ†ตํ•ฉ (merge)

  • main์—์„œ๋Š” index.html ๋กœ ๋ฉ”์ธํŽ˜์ด์ง€
  • Feature branch์—์„œ๋Š” login.html ๋กœ๊ทธ์ธํŽ˜์ด์ง€
  • ๋‘ ๊ฐœ๋ฅผ mergy ๋กœ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๊ธฐ

 

4. ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก๊ณผ ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ํ™•์ธ ( ํ™•์ธ ๋ช…๋ น์–ด : git branch )

  • ํ™•์ธ ๋ช…๋ น์–ด : git branch
  • *๊ฐ€ Head์ž„
  • Head : ํ˜„์žฌ ๋‚ด ์ž‘์—… ๊ณต๊ฐ„์€ main๋ธŒ๋žœ์น˜์ด๋‹ค. ํ˜„์žฌ ๋‚ด ์ž‘์—…์ด ์–ด๋А ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‚˜ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ. (์ฆ‰ ๊ฐœ๋ฆฌ2๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค๋ฉด, ๋‚ด ์ž‘์—…๊ณต๊ฐ„์€ ๊ฐœ๋ฆฌ2๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๊ฒƒ)

5. ๋ธŒ๋žœ์น˜ (Branch) ๋งŒ๋“ค๊ธฐ

1. ํ„ฐ๋ฏธ๋„๋กœ branch ์ƒ์„ฑ

2. fork ํ™•์ธ

3. git branch login ๋งŒ๋“ค์—ˆ์ง€๋งŒ, Head๋Š” ์•„์ง amin์„ ๊ฐ€๋ฆฌํ‚ด

 

6. ๋ธŒ๋žœ์น˜ (Branch) ์ด๋™

checkout

  • checkout -b : ๋ธŒ๋žœ์น˜ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด ์ด๋™
  • git checkout -b <๋ธŒ๋žœ์น˜๋ช…>

Switch

git switch gary
switch -c : ๋ธŒ๋žœ์น˜ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด ์ด๋™


ํŒŒ์ผ ์ˆ˜์ • ๋‚ด์šฉ ๋ณต์›
• git restore ํŒŒ์ผ๋ช…

  • ์‚ญ์ œํ•˜๊ณ  git diff ํ–ˆ์„๋•Œ ๋‹ค๋ฅธ๊ฑฐ ์•Œ๋ ค์คŒ
  • ๊ฐ€์žฅ์ตœ๊ทผ ์ปค๋ฐ‹๋œ ๋‚ด์šฉ์œผ๋กœ ๋ณต์›๋จ
  • VScode๋กœ ๋ณต์›

2. restore --staged

์Šคํ…Œ์ด์ง€ ์˜ฌ๋ฆฐ๊ฒƒ ๋นผ๊ธฐ (์Šคํ…Œ์ด์ง€ ์˜ฌ๋ผ๊ฐ„ ๊ฒƒ - addํ•œ๊ฒƒ์ž„)
์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ผ๊ฐ”๋˜๊ฒƒ์„ ๋‹ค์‹œ ๋นผ๊ธฐ
git restore --staged ํŒŒ์ผ๋ช…

 

3. reset

์Šคํ…Œ์ด์ง€ ์˜ฌ๋ฆฐ๊ฒƒ ๋นผ๊ธฐ
• git reset HEAD ํŒŒ์ผ๋ช…

 

 


git branch -D ์‚ญ์ œํ•  ๋ธŒ๋žœ์น˜ ๋ช…

  • ์ฃผ์˜ํ•  ์ ์€ ํ•ด๋‹น ๋ธŒ๋žœ์น˜์—์„œ ์‚ญ์ œํ•˜๋ฉด ์•ˆ๋จ. ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์— ๋“ค์–ด๊ฐ€์„œ ์‚ญ์ œ ํ•ด์•ผํ•จ.
  • ๋‘๊ฐœ ๋™์‹œ์— ์‚ญ์ œ๋„ ๊ฐ€๋Šฅ


0. ๋‚˜๋งŒ์˜ ์ •๋ฆฌ๋ณธ

 

1. git ์ •๋ฆฌ

[main]
1. git clone ์ฃผ์†Œ
2. ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ git pushํ•œ์ƒํƒœ๊นŒ์ง€
3. git branch ๋ธŒ๋žœ์น˜๋ช…
4. git push origin ๋ธŒ๋žœ์น˜๋ช… //๋ธŒ๋žœ์น˜github์˜ฌ๋ผ๊ฐ(main์—์„œ pull๋œ์ƒํƒœ๋กœ๊ฐ)

[branch]
(main ์œผ๋กœ ๋˜์–ด์žˆ์„๊ฒฝ์šฐ)
1. git checkout ๋ธŒ๋žœ์น˜๋ช… //๋ธŒ๋žœ์น˜์ด๋™
2. ํŒŒ์ผ๋ญ ๋งŒ๋“ค๊ธฐ
3. git add . / git commit -m "" /
4. git push origin ๋ธŒ๋žœ์น˜๋ช…
๋ธŒ๋žœ์น˜ github์— ์˜ฌ๋ผ๊ฐ
์ด ๋‹จ๊ณ„์—์„œ mergeํ•ด๋„ ๋˜์ง€๋งŒ 
๋งŒ์•ฝ ๋ˆ„๊ตฐ๊ฐ€ main์— ๊ทธ ์‚ฌ์ด์— push๋ฅผ ํ–ˆ๋‹ค๋ฉด, ์ถฉ๋Œ ์˜ˆ๋ฐฉ์„ ์œ„ํ•ด์„œ 
5. git pull origin main ํ•ด์˜ค๊ณ 
6. git push origin ๋ธŒ๋žœ์น˜๋ช…
7. ์ดํ›„์— mergeํ•˜๊ธฐ

/// branch์— ์ง์ ‘ ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ
[branchํŒŒ๊ณ ์„œ]
[์ง์ ‘ ๋“ค์–ด๊ฐ€๊ธฐ]
1. git clone -b ๋ธŒ๋žœ์น˜ --single-branch ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์ฃผ์†Œ
git clone -b branch2 --single-branch <https://github.com/test-tenten/test1.git>
2. ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ 
3. git add . / git commit -m ""
4. git push
์ด ์ƒํƒœ๋กœ ์ด์ œ githubํŽ˜์ด์ง€๊ฐ€์„œ merge๋ˆŒ๋Ÿฌ๋„๋˜๋Š”๋ฐ ์ถฉ๋Œ์˜ˆ๋ฐฉ์ฐจ์›์—์„œ
5. git pull origin
6. git push
ํ•ด์ฃผ๊ธฐ
7. ์ดํ›„์— githubํ™ˆํŽ˜์ด์ง€๊ฐ€์„œ merge

์‚ฌ์‹ค
4๋ฒˆ์„ ํ•˜๊ธฐ์ „์—
5-6๋ฒˆ ์ด๋ ‡๊ฒŒ ํ•ด์ค˜๋„ ๋จ.
ํ˜น์€ 2๋ฒˆ์ „์— 5๋ฒˆํ•ด์ค˜๋„๋จ.
  • ์ด๋ ‡๊ฒŒ
[main]
1. main ๋ธŒ๋žœ์น˜
2. git branch ๋ธŒ๋žœ์น˜๋ช… (๋ธŒ๋žœ์น˜๋ช…์œผ๋กœ branch ์ƒ์„ฑ)
(main ์œผ๋กœ ๋˜์–ด์žˆ์„๊ฒฝ์šฐ)
3. git checkout ๋ธŒ๋žœ์น˜๋ช… //๋ธŒ๋žœ์น˜์ด๋™
4. ํ•ด๋‹น ๋‚ด์—์„œ ๊ฐœ๋ฐœ(ํ•ญ์ƒ git pull origin main)
5. git add . / git commit -m ""
6. git push origin ๋ธŒ๋žœ์น˜๋ช…
๋ธŒ๋žœ์น˜ github์— ์˜ฌ๋ผ๊ฐ
์ด ๋‹จ๊ณ„์—์„œ mergeํ•ด๋„ ๋˜์ง€๋งŒ 
๋งŒ์•ฝ ๋ˆ„๊ตฐ๊ฐ€ main์— ๊ทธ ์‚ฌ์ด์— push๋ฅผ ํ–ˆ๋‹ค๋ฉด, ์ถฉ๋Œ ์˜ˆ๋ฐฉ์„ ์œ„ํ•ด์„œ 
6. git pull origin main ํ•ด์˜ค๊ณ 
7. git push origin ๋ธŒ๋žœ์น˜๋ช…
8. ์ดํ›„์— mergeํ•˜๊ธฐ

 

2. ์ถฉ๋Œ

  1. ์ œ๊ฐ€ pushํ•˜๊ธฐ์ „์— ๋ญ”๊ฐ€ main์ด๋ž‘ ๊ฒน์น˜๋ฉด
  2. 2023๋…„ 6์›” 9์ผ ์˜คํ›„ 4:412023๋…„ 6์›” 9์ผ ์˜คํ›„ 4:412023๋…„ 6์›” 9์ผ ์˜คํ›„ 4:41**
  3. pull origin mainํ–‡์„๋•Œ vscode์—๋Š” ๋งˆ์ง€๋ง‰ ์‚ฌ์ง„์ฒ˜๋Ÿผ ๋œจ๊ณ 
  4. 2023๋…„ 6์›” 9์ผ ์˜คํ›„ 4:412023๋…„ 6์›” 9์ผ ์˜คํ›„ 4:412023๋…„ 6์›” 9์ผ ์˜คํ›„ 4:41**
  5. ๋งŒ์•ฝ pull origin main์„ ์•ˆํ•œ์ƒํƒœ์—์„œ ๊ทธ๋ƒฅ pushํ›„์— megeํ•˜๋ คํ•˜๋ฉด 1-2๋ฒˆ ์‚ฌ์ง„์ฒ˜๋Ÿผ๋ฉ๋‹ˆ๋Œฑ

 

3. Git ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ

Git ๋กœ์ปฌ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•˜๋Š” branch ๋“ค์–ด๊ฐ€์„œ ์ž‘์—…
git branch -m old-branch new-branch  //์ด ๋ฐฉ๋ฒ•์‚ฌ์šฉํ•˜๊ธฐ

git branch -m test nameChange
  • ๊ธฐ์กด test ์ด๋ฆ„์—์„œ > nameChange๋กœ ๋ณ€๊ฒฝ
  • branch pushํ•  ๊ฒฝ์šฐ, ๋กœ์ปฌ์—์„œ๋Š” main๊ณผ nameChange๋งŒ ๋‚จ์Œ

  • ๊ทธ๋Ÿฌ๋‚˜ githubํŽ˜์ด์ง€์—์„œ๋Š” test๋ธŒ๋žœ์น˜์™€ nameChange๋ธŒ๋žœ์น˜๊ฐ€ ๊ณต์กด
  • ๋ณต์ œ ๊ฐœ๋…์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ
  • ๊ทธ์น˜๋งŒ commit ๋‚ด์—ญ์€ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—
  • ๊ธฐ์กด์˜ test ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋จ

 

4. Git Branch ์‚ญ์ œ

๋ฐฉ๋ฒ•1.

๋ฐฉ๋ฒ•2.

Git ๋กœ์ปฌ ๋ฐ ์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์‚ญ์ œํ•˜๊ธฐ

 

5. ๋ฐ”๋กœ์ด์ „ commit ๋‚ด์—ญ push ํ•œ ๊ฒƒ๋“ค ์ˆ˜์ •

git commit --amend -m "์ปค๋ฐ‹์ˆ˜์ • ํ•  ๋‚ด์šฉ"
git push -f origin branch
(git push -force origin branch)
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.