๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Git

[Git] Fork ๋– ๋จน๊ธฐ๐Ÿด

by yangsubinn 2022. 6. 11.

ํŒ€์œผ๋กœ ์ž‘์—…์„ ํ•˜๋Š” ๊ฒฝ์šฐ,

๋ฐ”๋กœ ํŒ€ ๋ ˆํฌ์—์„œ clone ๋ฐ›์•„์„œ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ• ๐Ÿ†š ํŒ€ ๋ ˆํฌ๋ฅผ fork ๋œฌ ๋ ˆํฌ๋ฅผ clone ๋ฐ›์•„์„œ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ด๋ ‡๊ฒŒ ๋‘ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๋‘ ํŒ€์—์„œ ๊ฐ๊ฐ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž‘์—…์„ ํ•ด๋ดค๋Š”๋ฐ,

fork ๋– ์„œ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ํ•ด๋‹น ๋ฐฉ๋ฒ•์˜ ์žฅ๋‹จ์ ์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ตฌ ํ•ฉ๋‹ˆ๋‹ค

 

Fork ๋– ์„œ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•

โœ๐Ÿป ์•„๋ž˜ ์ˆœ์„œ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
issue ์ƒ์„ฑ → ์ž‘์—… ํ›„ pull request → merge ํ›„ branch delete

 

1. ๋ ˆํฌ์— ๋“ค์–ด๊ฐ€์„œ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์„ ๋ณด๋ฉด ๋„ค๊ฐ€์ง€ ๋ฒ„ํŠผ์ด ์žˆ๋Š”๋ฐ, ์ด ์ค‘ Fork ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค

 

2. ๋ˆ„๋ฅด๋ฉด ๋‚ด๊ฐ€ ์ฐธ์—ฌ์ค‘์ธ organization ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜๊ณ ,

๊ฑฐ๊ธฐ์„œ ๋‚ด๊ฐ€ ํ•ด๋‹น ๋ ˆํฌ๋ฅผ fork ๋– ์„œ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” organization์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

ํŒ€ ๋ ˆํฌ๋ฅผ fork ๋– ์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ, ๊ฐ€์žฅ ์œ„์— ์žˆ์„ ๋ณธ์ธ์˜ username์„ ์„ ํƒํ•˜๊ณ 

๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ๊ฐœ์ธ ๋ ˆํฌ๋กœ username/(fork๋œฌ ๋ ˆํฌ ์ด๋ฆ„) ์ด ์ƒ์„ฑ๋˜์–ด ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

 

3. fork ๋– ์˜จ ๋‚ด ๋ ˆํฌ์—์„œ clone

 

git clone <ํด๋ก ๋ฐ›์„ ๋‚ด ๋ ˆํฌ ์ฃผ์†Œ>

 

4. ๊ธฐ์กด ํŒ€ ๋ ˆํฌ์—์„œ issue ์ƒ์„ฑ

๊ธฐ์กด ํŒ€ ๋ ˆํฌ
ํฌํฌ ๋– ์˜จ ๋‚ด ๋ ˆํฌ

fork ๋– ์˜จ ๋ ˆํฌ์—์„œ๋Š” ์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

 

5. ๋กœ์ปฌ์—์„œ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ํ›„ ์ž‘์—…

git checkout -b <๋ธŒ๋žœ์น˜์ด๋ฆ„>

 

6. ์ž‘์—… ํ›„ push

์ž‘์—… ํ›„ push๋Š” fork ๋– ์˜จ ๋‚ด ๋ ˆํฌ(origin)๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

git push origin <๋ธŒ๋žœ์น˜์ด๋ฆ„>

์š”๋ ‡๊ฒŒ ํ‘ธ์‹œ๋ฅผ ํ•˜๋ฉด, ๊ธฐ์กด ํŒ€ ๋ ˆํฌ์—๋Š” ๋ธŒ๋žœ์น˜๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ณ 

ํฌํฌ ๋œฌ ๋‚ด ๋ ˆํฌ์—์„œ๋งŒ ๋ธŒ๋žœ์น˜๊ฐ€ ๋‚˜ํƒ€์••๋‹ˆ๋‹ค.

(์™ผ)๊ธฐ์กด ํŒ€ ๋ ˆํฌ, (์˜ค)ํฌํฌ ๋œฌ ๊ฐœ์ธ ๋ ˆํฌ

์ €๋Š” feature/#230 ์ด๋ผ๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ž‘์—…์„ ํ–ˆ๊ณ , ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ํŒ€ ๋ ˆํฌ์˜ develop ์œผ๋กœ pull request๋ฅผ ๋‚ ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

7. ํŒ€ ๋ ˆํฌ๋กœ pull request ํ›„ merge

๊ฐœ์ธ ๋ ˆํฌ์—์„œ pull request๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋“ค์–ด๊ฐ€๋ฉด, ํŒ€ ๋ ˆํฌ์˜ pull request๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์–ด๋–ค ๋ธŒ๋žœ์น˜์—์„œ ํŒ€ ๋ ˆํฌ๋กœ ํ’€๋ฆฌํ€˜๋ฅผ ๋‚ ๋ฆฌ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋‚ ๋ฆฌ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹น

merge ๋˜ํ•œ ํ’€๋ฆฌํ€˜๋ฅผ ๋‚ ๋ฆฐ ํŒ€ ๋ ˆํฌ์—์„œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

8. ๋ธŒ๋žœ์น˜ ์‚ญ์ œ

๋ธŒ๋žœ์น˜ ์‚ญ์ œ๋Š” ๊ฐœ์ธ ๋ ˆํฌ์—์„œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ๋“  ๋ธŒ๋žœ์น˜๋ฅผ ํŒ€ ๋ ˆํฌ๋กœ ์ง์ ‘์ ์œผ๋กœ push ๋ฅผ ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ํŒ€ ๋ ˆํฌ์—๋Š” ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํฌํฌ ๋œฌ ๊ฐœ์ธ ๋ ˆํฌ๋กœ ํ‘ธ์‹œํ•œ ๋ธŒ๋žœ์น˜๋Š” ๊ฐœ์ธ ๋ ˆํฌ์—๋งŒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ ˆํฌ์—์„œ ์‚ญ์ œํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

9. ํŒ€ ๋ ˆํฌ์—์„œ Pull ๋ฐ›์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ๋กœ์ปฌ์— ๊ธฐ์กด ํŒ€ ๋ ˆํฌ ์—ฐ๊ฒฐ

๋ณ„๋„๋กœ ์ €์žฅ์†Œ๋ฅผ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ git remote๋‚˜ git remote -v ๋ช…๋ น์–ด๋ฅผ ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅํ•ด๋ณด๋ฉด,

์ด๋Ÿฐ ์‹์œผ๋กœ origin๋งŒ ์กด์žฌํ• ๊ฑฐ์—์—ฌ

๊ธฐ์กด ํŒ€ ๋ ˆํฌ์—์„œ pull ๋ฐ›์•„์„œ ์ž‘์—…ํ•  ์ผ์ด ์—†๋‹คํ•˜๋ฉด ์ด ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ,

ํŒ€์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ pull ๋ฐ›์„ ์ผ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŒ€ ๋ ˆํฌ๋ฅผ ๋กœ์ปฌ์— ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

์ €๋Š” origin-spark ๋ผ๋Š” ๋‹จ์ถ•์–ด๋กœ ํŒ€ ๋ ˆํฌ๋ฅผ ์—ฐ๊ฒฐํ•ด์คฌ์Šต๋‹ˆ๋‹ค.

git remote add origin-spark <๊ธฐ์กด ํŒ€ ๋ ˆํฌ url>

 

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ ๋’ค, git remote -v๋ฅผ ์ž…๋ ฅํ•ด๋ณด๋ฉด ์ง€์ •ํ•œ ๋‹จ์ถ•์–ด๋กœ ์ž˜ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด ์ƒํƒœ์—์„œ ํŒ€ ๋ ˆํฌ์˜ develop ๋ธŒ๋žœ์น˜๋ฅผ pull ๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด, ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ pull ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

git pull origin-spark develop

 

## ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด
# ํ˜„์žฌ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ €์žฅ์†Œ ํ™•์ธ
git remote

# ํ˜„์žฌ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ €์žฅ์†Œ + URL ํ™•์ธ
git remote -v

# ์ƒˆ๋กœ ์ €์žฅ์†Œ ์—ฐ๊ฒฐ
git remote add <์ €์žฅ์†Œ ๋ถ€๋ฅผ๋•Œ ์‚ฌ์šฉํ•  ๋‹จ์ถ•์–ด> <์ €์žฅ์†Œ url>

# origin์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์—ฐ๊ฒฐ๋œ ์ €์žฅ์†Œ์—์„œ pull ๋ฐ›๋Š” ๊ฒฝ์šฐ
git pull <๋‹ค๋ฅธ ์ €์žฅ์†Œ ๋‹จ์ถ•์–ด> <ํ•ด๋‹น ์ €์žฅ์†Œ์—์„œ ํ’€๋ฐ›๊ณ ์ž ํ•˜๋Š” ๋ธŒ๋žœ์น˜>

 

 

์ „์ฒด์ ์ธ ํ๋ฆ„์„ ๋‚˜ํƒ€๋‚ด๋ณด๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

 

Fork ๋– ์„œ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ์‹์˜ ์žฅ๋‹จ์ ?

์ œ๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ๋А๋‚€ ์žฅ๋‹จ์ ์€ ์ด๋ ‡์Šต๋‹ˆ๋‹น

 

์žฅ์ 

  • ํŒ€ ๋ ˆํฌ์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ๊ต‰์žฅํžˆ ๊น”๋”
  • ๋‚ด ๋ ˆํฌ์—์„œ ๋‚ด ๋ธŒ๋žœ์น˜๋งŒ ๋ณด์ด๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ์‹ค์ˆ˜๋กœ ์‚ญ์ œํ•  ์ผ X
  • ํ’€๋ฆฌํ€˜ ๋‚ ๋ฆฌ๊ธฐ ์ „๊นŒ์ง€๋งŒ ํ•ด๋„ ํ‘ธ์‹œ๋ฅผ ํ•ด๋„ ๋‚ด ๋ ˆํฌ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ญ”๊ฐ€ ์•ˆ์ „ํ•œ ๋А๋‚Œ

๋‹จ์ 

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

 

์‚ฌ์‹ค ํ•œ๋ฒˆ ์ €์žฅ์†Œ ์—ฐ๊ฒฐํ•˜๊ณ  ํ‘ธ์‹œํ•˜๊ณ  ํ’€๋ฐ›์•„๋ณด๋ฉด ํฌ๊ฒŒ ๊ทธ๋ƒฅ ๋ ˆํฌ๋ฅผ ๋ฐ”๋กœ clone ๋ฐ›์•„์„œ ํ•˜๋Š” ๊ฒƒ๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค...

๊ทธ๋ƒฅ ํ‘ธ์‹œํ•˜๊ณ  ํ’€ ๋ฐ›๋Š” ๊ณณ์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ,,

๋ญ๊ฐ€ ๋งž๊ณ  ํ‹€๋ฆฌ๋‹ค๋Š”๊ฑด ์—†๋Š” ๊ฒƒ ๊ฐ™๊ณ  ๊ฐ์ž์˜ ์ทจํ–ฅ์— ๋งž๊ฒŒ ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…ํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šด๋‹ˆ๋‹ค!

'Git' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Git] ๋ช…๋ น์–ด ๋ชจ์•„๋‘๊ธฐ๐Ÿคข  (0) 2022.08.01