๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ› Others.../- old dev log

[git] github ํ˜‘์—…์„ ์œ„ํ•œ fork ๋ถ€ํ„ฐ upstream ์„ค์ •๊นŒ์ง€.

by Wonit 2021. 1. 2.

์˜คํ”ˆ ์†Œ์Šค์— ๊ธฐ์—ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š”๋ฐ, ๋‚ด๊ฐ€ ์ง์ ‘ ์˜คํ”ˆ ์†Œ์Šค ์ฝ”๋“œ์— ์ˆ˜์ •์„ ํ•  ์ˆ˜ ์—†๋‹ค.

 

๊ทธ๋ž˜์„œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ์ž‘์—…์„ ํ•˜๊ณ  ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ์†Œ์œ ์ž์—๊ฒŒ ๊ฒ€์‚ฌ๋ฅผ ๋ฐ›์•„์•ผ ํ•œ๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  ๊ฒ€์‚ฌ๋ฅผ ๋‹ค ๋ฐ›์œผ๋ฉด ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ์†Œ์œ ์ž๊ฐ€ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ž์‹ ์˜ ์˜คํ”ˆ์†Œ์Šค ์ฝ”๋“œ์— ์ ์šฉ์‹œํ‚จ๋‹ค.

 

๊ฒ€์‚ฌ๋ฅผ ๋ฐ›๋Š” ๊ณผ์ •์„ ๋‹ค์Œ์— ๋ฐฐ์›Œ๋ณผ Pull Request๋ผ๊ณ  ํ•˜๊ณ , ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ์ž‘์—…์„ ์˜ค๋Š˜ ๋ฐฐ์›Œ๋ณผ fork ๋ผ๊ณ  ํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Pull Requestํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ฅผ ๋‚ด ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ ์ €์žฅ์†Œ๋กœ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •์„ upstream์ด๋ผ ํ•œ๋‹ค.

 

์šฉ์–ด ์ •๋ฆฌ

  • ๋ฉ”์ธ ์ €์žฅ์†Œ : ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ github์ƒ main repo๋กœ ๋‚ด๊ฐ€ ๊ธฐ์—ฌํ•˜๊ณ ์‹ถ์€ ํ”„๋กœ์ ํŠธ์˜ ์ €์žฅ์†Œ. ๋‚˜ํ•œํ… ์“ฐ๊ธฐ๊ถŒํ•œ ์—†์Œ. ๊ทธ๋ž˜์„œ ์ด๋ฅผ upstream์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ๋‚˜์˜ ์ €์žฅ์†Œ : github์—์„œ ๋‚ด ๊ณ„์ •์— ์žˆ๋Š” repo๋กœ ๋ฉ”์ธ ์ €์žฅ์†Œ๋กœ ๋ถ€ํ„ฐ forkํ•œ ์ €์žฅ์†Œ origin์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ๋กœ์ปฌ ์ €์žฅ์†Œ : ๋‚ด๊ฐ€ ์ปดํ“จํ„ฐ์— ์ƒ์„ฑํ•œ git repository file
  • ์ž‘์—… ๊ณต๊ฐ„ : ์‹ค์ œ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” workspace๋ฅผ ๋ถ€๋ฅธ๋‹ค.

์ˆœ์„œ

  1. ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ
  2. ๋กœ์ปฌ ์ €์žฅ์†Œ ์„ธํŒ…
  3. ๋ฉ”์ธ ์ €์žฅ์†Œ์™€ ๋‚ด ์ €์žฅ์†Œ ์‹ฑํฌํ•˜๊ธฐ

์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ

 

 

์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ๋ฉ”์ธ ์ €์žฅ์†Œ๋ฅผ ๋‚ด ์ €์žฅ์†Œ๋กœ fork ํ•ด์•ผํ•œ๋‹ค.

 

๊ทธ๋Ÿผ ๋ฉ”์ธ ์ €์žฅ์†Œ์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€์ ธ์™€ ๋‚ด ์›๊ฒฉ ์ €์žฅ์†Œ์— ์ €์žฅ๋˜๊ณ  ๋‚ด๊ฐ€ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด ๋œ๋‹ค.

 

 

๋กœ์ปฌ ์ €์žฅ์†Œ ์„ธํŒ…ํ•˜๊ธฐ

๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ์„ธํŒ…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.

  • ์ž‘์—… ๊ณต๊ฐ„ ๋งŒ๋“ค๊ธฐ
  • origin ์„ค์ •
  • upstream ์„ค์ •

์ž‘์—… ๊ณต๊ฐ„ ๋งŒ๋“ค๊ธฐ

์ž‘์—… ๊ณต๊ฐ„์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด git clone์„ ํ•ด๋„ ๋ฌด๋ฐฉํ•˜์ง€๋งŒ ์ด๋ฒˆ์—” ์ง์ ‘ ํด๋”๋ฅผ ๊นƒ ํด๋”๋กœ ์ดˆ๊ธฐํ™”๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

// ๋‚ด ์ž‘์—… ๊ณต๊ฐ„ ํด๋” ๋งŒ๋“ค๊ธฐ
$ mkdir my-workspace

// ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
$ cd my-workspace

// ๊นƒ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ์ดˆ๊ธฐํ™”
$ git init

 

origin ์„ค์ •

๋‚ด๊ฐ€ forkํ•œ ๋‚˜์˜ ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐ์‹œ์ผœ Pull Request๋ฅผ ๋ณด๋‚ผ ์ค€๋น„๋ฅผ ํ•œ๋‹ค.

$ git remote add origin forkํ•œ-๋‚ด-์›๊ฒฉ-์ €์žฅ์†Œ-url.git

 

upstream ์„ค์ •

๋ฉ”์ธ ์ €์žฅ์†Œ์˜ ์ฝ”๋“œ๋ฅผ ์‹ฑํฌํ•˜๊ธฐ ์œ„ํ•ด upstream ์„ค์ •์„ ํ•œ๋‹ค.

$ git remote add upstream ๋ฉ”์ธ-์ €์žฅ์†Œ-url.git

 

๋ฉ”์ธ ์ €์žฅ์†Œ์™€ ๋‚ด ์ €์žฅ์†Œ ์‹ฑํฌํ•˜๊ธฐ

 

์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๋ˆ„๊ตฌ์—๊ฒŒ๋‚˜ ์˜คํ”ˆ๋œ ์†Œ์Šค๋ฅผ ์œ ์ง€๋ณด์ˆ˜ ํ˜น์€ ์„œ๋น„์Šคํ•œ๋‹ค.

 

์˜คํ”ˆ์†Œ์Šค์˜ ํŠน์„ฑ์ƒ ๋‚˜ ํ˜ผ์ž๋งŒ contribution์„ ํ•˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์ธ ์ €์žฅ์†Œ์™€ syncํ•ด์•ผ ํ•œ๋‹ค.

 

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๊ฐ€ ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ์›๊ฒฉ repo์™€ ํ•จ๊ป˜ ๊ฐ€์•ผํ•œ๋‹ค.

 

๊ทธ ๊ณผ์ •์„ ๋ฐ”๋กœ fetch ๊ณผ์ •์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์•Œ์•„๋ณด์ž.

 

$ git fetch upstream

 

์ด ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด ์›๋ณธ ์†Œ์Šค์ฝ”๋“œ์˜ ๋‚ด์šฉ์„ ๋กœ์ปฌ์— ๋‚ด๋ ค๋ฐ›๋Š”๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‚ด๋ ค๋ฐ›์€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‹ค์ œ ๋‚ด repository์— merge ์‹œํ‚จ๋‹ค.

 

$ git merge upstream/master

 

๊ทธ๋ฆฌ๊ณ  ๋‚ด ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ push ํ•ด์ค€๋‹ค.

 

$ git push origin master

๋Œ“๊ธ€