Bibi's DevLog ๐Ÿค“๐ŸŽ

[Github] ๊นƒํ—ˆ๋ธŒ ํ”„๋กœ์ ํŠธ ๊ธฐ๋ฐ˜์˜ ์˜จ๋ผ์ธ ์ฝ”๋“œ๋ฆฌ๋ทฐ ์ˆœ์„œ ๋ณธ๋ฌธ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Git & GIthub ๊นƒ๊ณผ ๊นƒํ—ˆ๋ธŒ

[Github] ๊นƒํ—ˆ๋ธŒ ํ”„๋กœ์ ํŠธ ๊ธฐ๋ฐ˜์˜ ์˜จ๋ผ์ธ ์ฝ”๋“œ๋ฆฌ๋ทฐ ์ˆœ์„œ

๋น„๋น„ bibi 2021. 2. 12. 00:49

๊นƒํ—ˆ๋ธŒ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์˜จ๋ผ์ธ ์ฝ”๋“œ๋ฆฌ๋ทฐ ์ˆœ์„œ

์ฐธ๊ณ  ์ด๋ฏธ์ง€

*๋กœ์ปฌ ์ €์žฅ์†Œ = ๋‚ด PC (์œ„ ์ด๋ฏธ์ง€์˜ ์ฃผํ™ฉ์ƒ‰ ์˜์—ญ)

*์›๊ฒฉ ์ €์žฅ์†Œ = ๊นƒํ—ˆ๋ธŒ ์ €์žฅ์†Œ (javajigi/java-racingcar)

*ํ”„๋กœ์ ํŠธ ์›๊ฒฉ์ €์žฅ์†Œ = ๋‚ด๊ฐ€ ์ฐธ์—ฌํ•˜๊ณ  ์‹ถ์€ ๊นƒํ—ˆ๋ธŒ ์›๊ฒฉ์ €์žฅ์†Œ๋ฅผ ๋œปํ•จ. (code-squad/java-racingcar)

*origin = ๋‚ด ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋œปํ•จ

*upstream = ํ”„๋กœ์ ํŠธ ์›๊ฒฉ์ €์žฅ์†Œ๋ฅผ ๋œปํ•จ

*๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ = ํ”„๋กœ์ ํŠธ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋‚ด ๋ธŒ๋žœ์น˜ ์ด๋ฆ„

  1. ํ”„๋กœ์ ํŠธ ์›๊ฒฉ์ €์žฅ์†Œ์— ๋‚ด ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ์„ ์š”์ฒญํ•œ๋‹ค.

  2. ํ•ด๋‹น ์›๊ฒฉ์ €์žฅ์†Œ๋ฅผ forkํ•œ๋‹ค.

    • fork : ๋‹ค๋ฅธ ๊ณ„์ •์˜ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋‚ด ๊นƒํ—ˆ๋ธŒ ๊ณ„์ •์œผ๋กœ ๋ณต์‚ฌํ•ด ์˜จ๋‹ค.
      ๊นƒํ—ˆ๋ธŒ ์ €์žฅ์†Œ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์˜ Fork๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋œ๋‹ค.
  3. forkํ•œ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ cloneํ•œ๋‹ค.

    • git clone : ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ๋ณต์‚ฌํ•ด ์˜จ๋‹ค.
      ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋ณต์‚ฌํ•ด ์˜ค๊ณ  ์‹ถ์€ ์œ„์น˜๋กœ cdํ•œ ๋’ค ์•„๋ž˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•œ๋‹ค.
    • git clone -b ๋‚ด๋ธŒ๋žœ์น˜์ด๋ฆ„ --single-branch forkํ•œ์›๊ฒฉ์ €์žฅ์†ŒHTTPS์ฃผ์†Œ
  4. cloneํ•œ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ์—ด๊ณ , ์ž‘์—…์„ ์œ„ํ•œ ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ ๋‹ค.

    • cloneํ•œ ์œ„์น˜์˜ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ์—ด๊ณ , ํ•ด๋‹น ์œ„์น˜์—์„œ ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ ๋‹ค.

    • git checkout -b ์ƒˆ๋ธŒ๋žœ์น˜์ด๋ฆ„: ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ฆ๊ณผ ๋™์‹œ์— ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ฒดํฌ์•„์›ƒํ•œ๋‹ค.

    • ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋Š” ๋‘” ์ฑ„, ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๊ฑฐ๊ธฐ์„œ ์ž‘์—…ํ•œ ๋’ค ์™„์„ฑ๋˜๋ฉด mergeํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…ํ•œ๋‹ค. ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜์—์„œ ์ง์ ‘ ์ž‘์—…ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  5. ๋งŒ๋“  ์ƒˆ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—… ํ›„ add/commitํ•œ๋‹ค.

    • ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ์ž‘์—…ํ•˜๋Š” ๋‹จ๊ณ„๋งˆ๋‹ค ๋งŒ๋“ค๊ณ  ์ปค๋ฐ‹ํ•˜๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
    • git add . ๋˜๋Š” git add ํŒŒ์ผ๋ช…
    • git commit -m "์ปค๋ฐ‹๋ฉ”์‹œ์ง€"
  6. ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ ์ž‘์—… ํ•œ ๋‹จ์œ„๋ฅผ ๋งˆ์น˜๋ฉด, ๋‚ด ์›๊ฒฉ ์ €์žฅ์†Œ์— pushํ•œ๋‹ค.

    • ๋กœ์ปฌ์—์„œ ์ƒ์„ฑ ๋ฐ ์ž‘์—…ํ•œ ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์—๋„ ๋ฐ˜์˜ํ•œ๋‹ค.
    • git push origin ์ƒˆ๋ธŒ๋žœ์น˜์ด๋ฆ„
  7. ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด, ๋‚ด ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋ฐ˜์˜๋œ ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ํ”„๋กœ์ ํŠธ ์›๊ฒฉ์ €์žฅ์†Œ๋กœ pull request๋ฅผ ๋ณด๋‚ธ๋‹ค.

    • ๋‚ด ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ [New pull request]๋ฅผ ๋ˆ„๋ฅธ๋‹ค.
    • (Open a pull request์—์„œ) ํ”„๋กœ์ ํŠธ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜(base)๋Š” ๋‚ด ๋ธŒ๋žœ์น˜๋กœ ์„ ํƒํ•œ๋‹ค.
    • ๋‚ด ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜(compare)๋Š” ์ƒˆ ๋ธŒ๋žœ์น˜(์ƒˆ๋กœ ์ƒ์„ฑ ํ›„ ์ž‘์—…ํ•œ ๋ธŒ๋žœ์น˜)๋กœ ์„ ํƒํ•œ๋‹ค.
    • Able to merge๋ฅผ ํ™•์ธํ•œ ๋’ค pull request ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•ด ๋ณด๋‚ธ๋‹ค.
      pull request๋ฅผ ๋ฐ›์€(์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๋Š”)์‚ฌ๋žŒ์ด ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์—…ํ•œ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ ์œผ๋ฉด ๋œ๋‹ค.
    • ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๋Š” ์‚ฌ๋žŒ์€ ํ•ด๋‹น pull request์˜ Files changed์— ๋“ค์–ด๊ฐ€, ์‹ ์ฒญ์ž๊ฐ€ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•œ๋‹ค. comment, Review summary๋„ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
    • ๋ฆฌ๋ทฐ์–ด๋กœ๋ถ€ํ„ฐ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์œผ๋ฉด, ํ•ด๋‹น ๋ธŒ๋žœ์น˜์—์„œ ๋ฆฌ๋ทฐ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ ์ž‘์—…์„ ๊ณ„์†ํ•œ๋‹ค.
      5.๋กœ ๋Œ์•„๊ฐ€์„œ ๋ฐ˜๋ณตํ•œ๋‹ค.
    • ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๋Š” ์‚ฌ๋žŒ์€ pull request์˜ ์ž‘์—…๋‚ด์šฉ์ด ๊ดœ์ฐฎ๋‹ค๊ณ  ํ™•์ธ๋˜๋ฉด ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋ฅผ mergeํ•œ๋‹ค. ์ด๋Š” ํ•ด๋‹น ์ž‘์—…์„ ํ”„๋กœ์ ํŠธ ์›๊ฒฉ์ €์žฅ์†Œ์˜ ๋‚ด ๋ธŒ๋žœ์น˜์— ๋‚ด ์ž‘์—… ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  8. pull requestํ•œ ์ฒซ ๋ฒˆ์งธ ์ž‘์—…์ด ๋ฐ˜์˜๋˜๊ณ  ๋‚˜๋ฉด ๋‹ค์Œ ์ž‘์—…์„ ํ•ด์•ผ ํ•œ๋‹ค.
    ์ž‘์—…์„ ํ•˜๊ธฐ ์ „, ํ”„๋กœ์ ํŠธ ์›๊ฒฉ์ €์žฅ์†Œ์˜ ๋‚ด ๋ธŒ๋žœ์น˜์— ๋‚ด ์ž‘์—…๋‚ด์šฉ์ด ๋ฐ˜์˜๋œ ์ƒํƒœ์ด๊ธฐ ๋–„๋ฌธ์—, ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜์—๋„ ํ•ด๋‹น ์ž‘์—…๋‚ด์šฉ์ด ๋ฐ˜์˜๋˜๋„๋ก ํ•˜๋Š” ์—ฐ๊ฒฐ ๋ฐ ๋™๊ธฐํ™” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.

    • ๋จผ์ € ๋กœ์ปฌ์ €์žฅ์†Œ์—์„œ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋กœ git checkoutํ•œ๋‹ค.
    • ๋กœ์ปฌ์ €์žฅ์†Œ๋Š” ํ˜„์žฌ ๋‚ด ์›๊ฒฉ์ €์žฅ์†Œ์—๋งŒ ์—ฐ๊ฒฐ์ด ๋˜์–ด ์žˆ๋‹ค.
      ๋กœ์ปฌ ์ €์žฅ์†Œ์™€ ํ”„๋กœ์ ํŠธ ์›๊ฒฉ์ €์žฅ์†Œ๋ฅผ '์—ฐ๊ฒฐ'ํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.
      • git remote add upstream ํ”„๋กœ์ ํŠธ์›๊ฒฉ์ €์žฅ์†ŒHTTPS์ฃผ์†Œ (์ตœ์ดˆ 1ํšŒ)
      • git remote -v : ๋กœ์ปฌ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐ๋œ ์›๊ฒฉ์ €์žฅ์†Œ ๋‚ด์—ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
        origin๊ณผ upstream์ด ๋‘˜ ๋‹ค ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
        (origin = ๋‚ด ์›๊ฒฉ ์ €์žฅ์†Œ / upstream = ํ”„๋กœ์ ํŠธ ์›๊ฒฉ ์ €์žฅ์†Œ)
  9. ๋กœ์ปฌ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐ๋œ ํ”„๋กœ์ ํŠธ ์›๊ฒฉ์ €์žฅ์†Œ๋กœ๋ถ€ํ„ฐ ๋ณ€๊ฒฝ๋œ ์ž‘์—…๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜จ๋‹ค. (๋™๊ธฐํ™”)

    • git fetch upstream ๋‚ด๋ธŒ๋žœ์น˜์ด๋ฆ„
      : upstream(ํ”„๋กœ์ ํŠธ ์›๊ฒฉ์ €์žฅ์†Œ)์—์„œ ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
    • git branch -a๋กœ ๋กœ์ปฌ์ €์žฅ์†Œ ๋ฉ”์ธ๋ธŒ๋žœ์น˜, ๋กœ์ปฌ์ €์žฅ์†Œ ์ƒˆ ๋ธŒ๋žœ์น˜, ๋‚ด ์›๊ฒฉ์ €์žฅ์†Œ ๋ธŒ๋žœ์น˜(remote/origin/..), ํ”„๋กœ์ ํŠธ ์›๊ฒฉ์ €์žฅ์†Œ ๋ธŒ๋žœ์น˜(remote/upstream/..)๊ฐ€ ๋ชจ๋‘ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
    • git rebase upstream/๋‚ด๋ธŒ๋žœ์น˜์ด๋ฆ„
      : ํ”„๋กœ์ ํŠธ์›๊ฒฉ์ €์žฅ์†Œ(upstream)์˜ ๋‚ด ๋ธŒ๋žœ์น˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.
      (๋ฐ˜๋“œ์‹œ ๋กœ์ปฌ์ €์žฅ์†Œ์˜ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋กœ ์ฒดํฌ์•„์›ƒํ•œ ์ƒํƒœ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•จ)
      ์ด์ œ ๋กœ์ปฌ์ €์žฅ์†Œ-ํ”„๋กœ์ ํŠธ์›๊ฒฉ์ €์žฅ์†Œ ๊ฐ„ ๋™๊ธฐํ™” ์ž‘์—…์ด ๋๋‚ฌ๋‹ค.
  10. ์ด์ œ ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ 4.์ฒ˜๋Ÿผ ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค์–ด ๋‹ค์Œ ์ž‘์—…์„ ํ•˜๋ฉด ๋œ๋‹ค.
    ์ž‘์—… ํ›„์—๋Š” 4. ์ดํ›„ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค