GIT

Intro

  • Git ๊ณผ Git Hub?

    • Git: local ์ €์žฅ์†Œ ๋งŒ๋“ค๊ณ  ํŒŒ์ผ, ์ฝ”๋“œ ๋“ฑ ๊ด€๋ฆฌ

    • GitHub:

      • ๋‚ด๊ฐ€ local์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ(git์œผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌํ•œ ์ฝ”๋“œ)๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ๋ฐฑ์—… ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„.

      • ๋ฐ˜๋Œ€๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด github์— ์˜ฌ๋ฆฐ ์ž๋ฃŒ๋ฅผ ๋ณต์ œํ•ด์˜ค๊ฑฐ๋‚˜, ์–ด๋–ค ์ปค๋ฐ‹, ์–ด๋–ค ์†Œ์Šค ์ฝ”๋“œ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ํ™•์ธ ๋ฐ ๋ฐ˜์˜๊ฐ€๋Šฅ

      • ๋‚ด๊ฐ€ git์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ์ผ์„ ๋ฐฑ์—…ํ•  ์ˆ˜ ์žˆ์Œ.

      • ๊ณต๋™ ํ”Œ์  ํ˜‘์—… ๊ฐ€๋Šฅ

    • Curriculum

      • Git ๊ณผ ๋ฒ„์ „ ๊ด€๋ฆฌ

      • Git & GitHub - CLI

      • Git & GitHub - GUI

ํ™˜๊ฒฝ ์„ค์ • ํ•˜๊ธฐ

  1. ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๋ญ”๊ฐ€์š”?

    • ์›ํ•˜๋Š” ์‹œ์ ๋งˆ๋‹ค ๋ฒ„์ „์„ ๋งŒ๋“ค๊ณ , ์ด๋“ค ๊ฐ„์— ์ž์œ ๋กญ๊ฒŒ ๋Œ์•„๋‹ค๋‹Œ๋‹ค.

    • ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ฒ„์ „ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋™๋ฃŒ๊ฐ€ ๋งŒ๋“  ๋ฒ„์ „์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๊ณ 

    • ๋™๋ฃŒ์™€ ๋‚ด ๋ฒ„์ „์„ ๋น„๊ตํ•ด์„œ ์ตœ์‹ ๋ณธ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. GitHub์— ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ • (flow)

    • ๋‚ด ์ปดํ“จํ„ฐ ํ”„๋กœ์ ํŠธ ํด๋”์— git ์“ธ ๊ฑฐ๋ผ๊ณ  ๋ช…๋ น git init

    • ์ฝ”๋”ฉ

    • ๋ณ€๊ฒฝ ํŒŒ์ผ ์ค‘ ์˜ฌ๋ฆฌ๊ธฐ ์›ํ•˜๋Š” ๊ฒƒ๋งŒ ์„ ํƒ git add

    • ์„ ํƒํ•œ ํŒŒ์ผ๋“ค ํ•œ ๋ฉ์–ด๋ฆฌ๋กœ ๋งŒ๋“ค๊ณ  ์„ค๋ช… ์ ๊ธฐ git commit -m message

    • GitHub์‚ฌ์ดํŠธ์— ํ”„๋กœ์ ํŠธ ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ(๋ธ”๋กœ๊ทธ ๋งŒ๋“œ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ)

    • ๋‚ด ์ปดํ“จํ„ฐ ํ”„๋กœ์ ํŠธ ํด๋”์— GitHub ์ €์žฅ์†Œ ์ฃผ์†Œ ์•Œ๋ ค์ฃผ๊ธฐ git remote add

    • ๋‚ด ์ปดํ“จํ„ฐ์— ๋งŒ๋“ค์—ˆ๋˜ ๋ฉ์–ด๋ฆฌ GitHub์— ์˜ฌ๋ฆฌ๊ธฐ git push

CLI ๋กœ GIT ๊ธฐ์ดˆ ์ตํžˆ๊ธฐ

  1. ๊นƒ ์ดˆ๊ธฐํ™”์™€ ๋กœ์ปฌ ์ €์žฅ์†Œ (git init)

    • ์›ํ•˜๋Š” ํด๋”(boxiting-cat)์—์„œ git ์ดˆ๊ธฐํ™” (git init)

    • .git ์ˆจ๊ฒจ์ง„ ํด๋” == ๋กœ์ปฌ ์ €์žฅ์†Œ

    • ๋กœ์ปฌ ์ €์žฅ์†Œ์— ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ฒ„์ „ ์ •๋ณด, ์›๊ฒฉ ์ €์žฅ์†Œ ์ฃผ์†Œ ๋“ฑ์ด ์ €์žฅ๋จ

    • ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋‚ด ์ปดํ“จํ„ฐ๋กœ ์ฝ”๋“œ๋ฅผ ๋ฐ›์•„์˜ค๋ฉด ๋กœ์ปฌ ์ €์žฅ์†Œ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ๊น€

    • ์ฃผ์˜์ : ํ•œ ํด๋”์— ํ•˜๋‚˜์˜ ๋กœ์ปฌ ์ €์žฅ์†Œ๋งŒ ์œ ์ง€ํ•  ๊ฒƒ!

      1. ์ฒซ๋ฒˆ ์งธ ๋ฒ„์ „ ๋งŒ๋“ค๊ธฐ (git add, git commit, git log)

    • ์ปค๋ฐ‹(commit) == ํ•˜๋‚˜์˜ ๋ฒ„์ „

    • ์‹ค์Šต

      1. ๊นƒ ์ดˆ๊ธฐํ™” ํ•œ ํด๋” ๋‚ด๋ถ€(boxiting-cat)์— README.md, index.html ํŒŒ์ผ์ƒ์„ฑ

      2. ์›ํ•˜๋Š” ํŒŒ์ผ๋งŒ ์„ ํƒํ•˜๊ธฐ /์ „์ฒด ํŒŒ์ผ ์„ ํƒํ•˜๊ธฐ

        git add README.md / git add .

      3. ๋ฉ”์„ธ์ง€๋ฅผ ๋‹ฌ์•„ ์ปค๋ฐ‹์œผ๋กœ ๋งŒ๋“ค๊ธฐ

        git commit -m "ํ”„๋กœ์ ํŠธ ์„ค๋ช… ํŒŒ์ผ ์ถ”๊ฐ€"

      4. ์ƒ์„ฑํ•œ ์ปค๋ฐ‹ ๋ณด๊ธฐ

        git log

    • ์ปค๋ฐ‹ ์‹œ ์ฃผ์˜

      • ์˜๋ฏธ ์žˆ๋Š” ๋ณ€๋™ ์‚ฌํ•ญ์„ ๋ฌถ์–ด์„œ ๋งŒ๋“ค ๊ฒƒ.

      • ๋™๋ฃŒ ๊ฐœ๋ฐœ์ž ํ˜น์€ ๋ฏธ๋ž˜์˜ ๋‚ด๊ฐ€ ์–ด๋–ค ํŒŒ์ผ์„ ์ˆ˜์ •ํ–ˆ๋Š”์ง€ ์†์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

      • ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€๋Š” ๊ท€์ฐฎ๋”๋ผ๋„ ์‹œ๊ฐ„ ๋“ค์—ฌ ์ž‘์„ฑ(๋‚˜์ค‘์— ์ฐพ๊ธฐ ์ข‹๊ฒŒ)

  2. ๋งŒ๋“  ๋ฒ„์ „ GitHub์— ์˜ฌ๋ฆฌ๊ธฐ (git remote add, git push)

    • ๋กœ์ปฌ ์ €์žฅ์†Œ: ๋‚ด ์ปดํ“จํ„ฐ์— ๋ฒ„์ „๊ด€๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„

    • ์›๊ฒฉ ์ €์žฅ์†Œ: ๋กœ์ปฌ ์ €์žฅ์†Œ์— ๋ฒ„์ „ ๊ด€๋ฆฌํ•œ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„

    • ์‹ค์Šต 1. GitHub์— ๋กœ๊ทธ์ธ & repository(์ €์žฅ์†Œ) ์ƒ์„ฑ 2. ๋‚ด ์ปดํ“จํ„ฐ git ์ดˆ๊ธฐํ™”ํ•œ ํด๋”์— GitHub ์ €์žฅ์†Œ ์ฃผ์†Œ ์•Œ๋ ค์ฃผ๊ธฐ git remote add [์›ํ•˜๋Š”์ด๋ฆ„] https://github.com/์•„์ด๋””/repository์ด๋ฆ„.git git remote add origin https://github.com/์•„์ด๋””/repository์ด๋ฆ„.git 3. ๋งŒ๋“  ์ปค๋ฐ‹ ํ‘ธ์‹œํ•˜๊ธฐ git push origin master

      • origin(remote) ์— master(local (๋ธŒ๋žœ์น˜)์— ์ €์žฅ๋œcommit๋“ค์ด ์˜ฌ๋ผ๊ฐ€์ง)

      • GitHub ์‚ฌ์ดํŠธ์— ์˜ฌ๋ผ๊ฐ„ ์ปค๋ฐ‹ ํ™•์ธ

    • ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ €์žฅ์†Œ ๋ฐ›์•„์˜ค๊ธฐ (git pull)

    • ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋‚ด ์ปดํ“จํ„ฐ์— ๋ฐ›์•„์˜ค๊ธฐ: ํด๋ก  (git clone)

    • ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ: ํ’€ (git pull)

    • ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ pushํ•  ๋•Œ๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์— ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

    • ์‹ค์Šต

      • ์ƒˆ๋กœ์šด ํด๋” ์ƒ์„ฑ(boxiting-oct)

      • ์ด์ „์— ๋งŒ๋“  ์ €์žฅ์†Œ ๋ฐ›์•„์˜ค๊ธฐ

        git clone https://github.com/์•„์ด๋””/repo์ด๋ฆ„.git .

        • ๋งˆ์ง€๋ง‰์— . ๋ถ™ํžˆ๋ฉด ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ์†Œ ๋ฐ›์Œ

        • . ์ƒ๋žต์‹œ repo์ด๋ฆ„์œผ๋กœ ์ƒˆ ํด๋” ์ƒ์„ฑํ›„ ํ•˜์œ„์— ๋“ค์–ด๊ฐ€์ง

        • cloneํ•ด์˜ค๋ฉด ์ž๋™์œผ๋กœ .git ์ƒ์„ฑ

        • zip ํŒŒ์ผ๋กœ ๋ฐ›์„ ๊ฒฝ์šฐ .git์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐํ™”, ์›๊ฒฉ์ €์žฅ์†Œ ์ง€์ • ๋ณ„๋„๋กœ ํ•ด์•ผํ•จ.

        • open in desktop: GitHub desktop GUI

        • ์ฐธ๊ณ : ๋ณธ ๊ฐ•์˜์—์„œ๋Š” source tree ๋กœ GUI ์ปจํŠธ๋กค

      • ์—…๋ฐ์ดํŠธ ๋œ ๋ฐ์ดํ„ฐ๋Š” ํ’€(pull) ๋ช…๋ น์–ด๋กœ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

        git pull origin master

๊ถ๊ธˆ์ 

  • ์ปค๋ฐ‹ ๊ฐ์ฒด์— ๋ฌด์—‡์ด ์ €์žฅ๋ ๊นŒ?

  • ๋‘ ์‚ฌ๋žŒ์ด ๋ณ‘๋ ฌ๋กœ ์ปค๋ฐ‹์„ ๋งŒ๋“ค๊ณ  ์‹ถ์„๋•Œ ์–ด๋–กํ•˜์ง€?

  • ๋‘ ์‚ฌ๋žŒ์ด ๋งŒ๋“  ๋ฒ„์ „์„ ํ•ฉ์น ์ˆ˜ ์žˆ์„๊นŒ?

  • ๋‚จ์ด ๋งŒ๋“  ์˜คํ”ˆ ์†Œ์Šค์—๋Š” ์–ด๋–ป๊ฒŒ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์ง€?

GUI๋กœ GIT ๋‹ค์ง€๊ธฐ

  • add & commit

    • ๊นƒ์—์„œ ์ปค๋ฐ‹์ด๋ž€?

      • ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ๋ชจ์Œ์ด ์•„๋‹˜! => ํ•˜๋‚˜์˜ ์ตœ์ข…์ฝ”๋“œ ๋ชจ์Œ!!

      • ๋‹ค๋งŒ ๊ธฐ์กด ์ปค๋ฐ‹๊ณผ ๋น„๊ตํ•ด์„œ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ฉด '๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋‹ค' ๊ณ  ์ €์žฅํ•ด์„œ ์šฉ๋Ÿ‰์ด ๋ฌด๊ฒ์ง€ ์•Š๋‹ค.

      • SVN์€ ๋ฐ”๋กœ ์ด์ „ ์ปค๋ฐ‹๊ณผ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋งŒ ์ €์žฅ

      • ๊ทธ๋ž˜์„œ ์ปค๋ฐ‹๋‹น ์šฉ๋Ÿ‰์€ ๋” ๊ฐ€๋ณ์ง€๋งŒ, ํ•œ ๋ฒ„์ „์„ ๋ณด๋ ค๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ณ„์‚ฐํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Š๋ฆฌ๋‹ค.

      • Git์€ ๋ฐ”๋กœ ์ด์ „ ์ปค๋ฐ‹๋งŒ ๋ณด๋ฉด ๋œ๋‹ค. (์†๋„ ๋น ๋ฅด๋‹ค.)

  • ๋ธŒ๋žœ์น˜(branch)

    • ์™œ ๊ฐ™์ด ์ž‘์—…ํ•˜๋ ค๋ฉด ์—ฌ๋Ÿฌ ์ค„๋กœ ์ปค๋ฐ‹์„ ์Œ“์•„์•ผ ํ• ๊นŒ?

      • ํ•œ ์ค„์—์„œ ์ž‘์—…ํ•˜๋ฉด ์ถฉ๋Œ์ด ๋‚  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ!

      • ๋™์‹œ์— ๋˜‘๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๊ณ ์น  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋‹ˆ๊นŒ

  • n ์ค„๋กœ ์Œ“๊ณ  ๋‚˜์ค‘์— ํ•ฉ์น  ์ˆ˜ ์žˆ์„๊นŒ?

    • ok. ์ถฉ๋Œ์ด ๋‚˜๋”๋ผ๋„, ํ•ฉ์น˜๋Š” ์‹œ์ ์— ๋ช…์‹œ์ ์œผ๋กœ ์ถฉ๋Œ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ.

  • source tree

    1. master: ๋‚ด ์ปดํ“จํ„ฐ์—๋งŒ ์žˆ๋Š” ๋‚ด์šฉ

    2. origin/master: ์›๊ฒฉ/๋‚ด์ปดํ“จํ„ฐ์— ์žˆ๋Š” ๋‚ด์šฉ

    3. HEAD: ๋‚ด๊ฐ€ ์ง€๊ธˆ ์ž‘์—…ํ•˜๋Š” ๋กœ์ปฌ ๋ธŒ๋žœ์น˜

      • ๋งŽ์€ ๋ธŒ๋žœ์น˜๋“ค ์ค‘์—์„œ๋„ ๋‚ด๊ฐ€ ์–ด๋–ค ๋ธŒ๋žœ์น˜์— ์žˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ

    4. ๋ธŒ๋žœ์น˜ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๋ธŒ๋žœ์น˜๋งŒ ๋ณด์ž…๋‹ˆ๋‹ค.

      • ์›๊ฒฉ ์ €์žฅ์†Œ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ํด๋ฆญํ•ด๋ณด์ž

      • ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ธŒ๋žœ์น˜ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋™๋ฃŒ ๋ธŒ๋žœ์น˜๋„ ํ™•์ธ ๊ฐ€๋Šฅ.

      • ๋™๋ฃŒ ๋ธŒ๋žœ์น˜ ๋”๋ธ” ํด๋ฆญ ์‹œ checkoutํ•  ์ˆ˜ ์žˆ๋Š” ์ฐฝ ๋œธ.

      • checkoutํ•˜๋ฉด, ๋ธŒ๋žœ์น˜ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋™๋ฃŒ ๋ธŒ๋žœ์น˜๋„ ํ™•์ธ ๊ฐ€๋Šฅ.

  • ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ

    • cat ๋ธŒ๋žœ์น˜๋ฅผ ํ˜„์žฌ ์‹œ์ ์— ๋งŒ๋“ค์–ด๋ผ. (HEAD๊ฐ€ ์žˆ๋Š” ์œ„์น˜์—)

      git branch cat

    • cat ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•ด๋ผ.(HEAD๊ฐ€ cat์œผ๋กœ ์ด๋™)

      git checkout cat

    • commit์„ ์ง„ํ–‰ํ•˜๋ฉด, cat ๋ธŒ๋žœ์น˜๋Š” ์ƒˆ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๊ณ ,

      ๊ธฐ์กด master๋ธŒ๋žœ์น˜๋Š” ๊ทธ๋Œ€๋กœ ์žˆ๋‹ค. (HEAD๊ฐ€ cat์— ์žˆ๊ธฐ ๋•Œ๋ฌธ)

  • ์‹ค์Šต

    • boxiting-cat์ €์žฅ์†Œ: master์—์„œ feat/main-page ๋ธŒ๋žœ์น˜์ƒ์„ฑ

      • feat/๊ธฐ๋Šฅ์ด๋ฆ„

        • ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด feat๊ฐ€ ํด๋”์ฒ˜๋Ÿผ ๋˜์–ด์žˆ์–ด์„œ ๋งŽ์€ ๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ์— ์œ ์šฉํ•˜๋‹ค.

        • ํ•œ ์‚ฌ๋žŒ์ด ๊ฐœ๋ฐœํ•˜๋Š” ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜

        • ํ˜น์€ fix/๋ฒ„๊ทธ์ด๋ฆ„, hotfix/๊ธ‰ํ•œ๋ฒ„๊ทธ

        • ์ž‘์—…์ด ๋๋‚˜๋ฉด, dev(ํ˜น์€ master)๋ธŒ๋žœ์น˜๋กœ PR ๋ณด๋‚ด๊ธฐ

        • dev ๋ธŒ๋žœ์น˜์— ํผ์ง€๋ง‰ํ•œ ์ž‘์—… ๋ชจ๋‘ ๋จธ์ง€๋˜๋ฉด release, latest๋กœ ๋จธ์ง€์‹œํ‚ค๊ณ  ์ด๋ฅผ ์‹ค์„œ๋ฒ„์— ๋ฐฐํฌ

        • ์ง์ ‘ ์ปค๋ฐ‹์€ feat(ํ˜น์€ fix, hotix)๋ธŒ๋žœ์น˜์—๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

        • dev๋‚˜ master, release ๋ธŒ๋žœ์น˜์—๋Š” ์ง์ ‘ ์ปค๋ฐ‹ํ•˜์ง€ ๋ง๊ณ  ๋จธ์ง€๋งŒํ•ฉ๋‹ˆ๋‹ค.

      • source tree์—์„œ ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, bold(๋‘๊ป๊ฒŒ)์ฒ˜๋ฆฌ๋œ ๋ถ€๋ถ„์„ ์ฝ์œผ๋ฉด ๋œ๋‹ค.

    • ์ปค๋ฐ‹์ถ”๊ฐ€

    • boxiting-oct์ €์žฅ์†Œ: pull๋ฐ›๊ธฐ

    • master์—์„œ feat/commit ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

    • ์ปค๋ฐ‹ ์ถ”๊ฐ€

    • merge(ํ•ฉ์น˜๊ธฐ)

  • flow

    • master ๋ธŒ๋žœ์น˜์˜ ์ตœ์‹  ์ปค๋ฐ‹(base)์—

    • oct ๋ธŒ๋žœ์น˜์˜ ์ตœ์‹  ์ปค๋ฐ‹(compare,head)์„ ํ•ฉ์น˜๋ ค๊ณ  ํ•œ๋‹ค.

    • ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ๋งˆ๋ฌด๋ฆฌ ๋˜๋ฉด, ๊ธฐ๋Šฅ ๊ฐœ๋ฐœํ•œ ๊ฒƒ์„ master ๋ธŒ๋žœ์น˜์— ํ•ฉ์นœ๋‹ค.

  • rule

    • base๊ฐ€ ๋  master ๋ธŒ๋žœ์น˜๋กœ ์ด๋™(head๋ฅผ master๋กœ ์ด๋™)

      • source tree์—์„œ๋Š” master๋ฅผ ๋”๋ธ”ํด๋ฆญ

    • compare ๋ธŒ๋žœ์น˜(oct)๋ฅผ ๋‚˜์™€ ํ•ฉ์น˜๊ณ  ์‹ถ๋‹ค๊ณ  ๋ช…๋ น git merge oct

      • source tree์—์„œ๋Š” ํ•ด๋‹น ๋ธŒ๋žœ์น˜ ์šฐ์ธก ํด๋ฆญ ํ›„ ๋ณ‘ํ•ฉ

  • ์ข…๋ฅ˜

    • fast-forward merge

    • merge-commit

    • conflict

    • conflict(์ถฉ๋Œ)

  • ๋จธ์ง€ํ•  ๋•Œ ๋‘ ๋ฒ„์ „์ด ๊ฐ™์€ ๊ณณ์„ ์ˆ˜์ •ํ–ˆ๋‹ค๋ฉด ์ด๋ฅผ ์ˆ˜๋™์œผ๋กœ ๊ณ ์ณ ์ค˜์•ผ ํ•œ๋‹ค.

  • ์•„๋ž˜์™€ ๊ฐ™์ด base ์—์„œ ์ž‘์„ฑํ•œ ๊ณณ๊ณผ, compare์—์„œ ์ž‘์„ฑํ•œ ๊ณณ์ด ์ถฉ๋Œ์ด ๋‚˜๋Š”๋ฐ ์ˆ˜๋™์œผ๋กœ <<<<>>>> ๋ฅผ ์ง€์šฐ๊ณ  ๊ณ ์ณ์ฃผ๋ฉด ๋œ๋‹ค.

      <<<<HEAD
      [base]
      ===
      [compare]
      >>>>
  • fork: ์ €์žฅ์†Œ ํ†ต์ฑ„๋กœ ๋ณต์ œํ•˜๊ธฐ

  • ์˜คํ”ˆ์†Œ์Šค์— ๊ธฐ์—ฌํ•˜๊ธฐ ์œ„ํ•ด collaborators ๋“ฑ๋ก์„ ๋ถ€ํƒํ•˜์ง€ ์•Š๋”๋ผ๋„, ๋‚ด ์ €์žฅ์†Œ์— ํ•ด๋‹น ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œ(fork)ํ•ด์„œ ๊ทธ๊ณณ์—์„œ ์ž์œ ๋กญ๊ฒŒ ์ปค๋ฐ‹, ํ‘ธ์‰ฌ ํ›„ ํ•ด๋‹น ์ €์žฅ์†Œ์— mergeํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญ(pull request)ํ•˜๋ฉด ๋œ๋‹ค.

  • pull request

  • rule

    • ๋จธ์ง€ํ•˜๊ณ  ์‹ถ์€ ๋‘ ๋ธŒ๋žœ์น˜๋ฅผ ์„ ํƒํ•˜๊ณ 

    • ์–ด๋–ค ๋ณ€๊ฒฝ์„ ํ–ˆ๋Š”์ง€ ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ์— ์“ฐ๋ฉด ๋œ๋‹ค.

    • ๋‹จ์ผ ์ €์žฅ์†Œ์—์„œ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ๊ณ , ํฌํฌํ•œ ์ €์žฅ์†Œ์—์„œ ๋ณด๋‚ผ์ˆ˜๋„ ์žˆ๋‹ค.

    • ์ฝ”๋“œ ํ•จ๊ป˜ ์ž‘์„ฑํ•˜๋Š” ๋™๋ฃŒ ์žˆ๋‹ค๋ฉด, ์ตœ๋Œ€ํ•œ ์ง์ ‘ ๋จธ์ง€ํ•˜๋Š”๊ฑด ํ”ผํ•˜๊ณ , ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ†ตํ•ด ํ•˜์ž.

    • ๋™๋ฃŒ๊ฐ€ ๋‚ด ํ’€ ๋ฆฌํ€˜(PR)์„ ๋ณด๊ณ  ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ฐ€๋Šฅ!

    • ๋™๋ฃŒ์˜ PR์— ์ˆ˜์ •์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๋Œ“๊ธ€ ๋‹ฌ์•„ change request๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ

    • ์˜คํ”ˆ ์†Œ์Šค์— PR ๋ณด๋‚ผ๋•Œ์—๋Š” ๊ธฐ์—ฌ ์•ˆ๋‚ด๋ฌธ์„œ(contribution guide line)๋ฅผ ๋ฐ˜๋“œ์‹œ ์ฐธ๊ณ ํ•  ๊ฒƒ!!

  • ๋ฐฉ๋ฒ•

    • repository์—์„œ new pull request ํด๋ฆญ

    • base์™€ compare ์œ„์น˜ ๊ฒ€ํ†  ํ›„, create pull request

    • pull request๋ฅผ ๋ฐ›์€ ์‚ฌ๋žŒ์€ pull requests ์ฐฝ์œผ๋กœ ๊ฐ€์„œ

    • file changed๋ฅผ ํด๋ฆญํ•˜๋ฉด 3๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ๋‹ค.

      • comment

      • approve

      • request change

        1. ์ถ”๊ฐ€ ํ‚ค์›Œ๋“œ

  • rebase: ๋ฌต์€ ์ปค๋ฐ‹์„ ์ƒˆ ์ปค๋ฐ‹ ์ฒ˜๋Ÿผ ์กฐ์ž‘

  • amend: ๊นœ๋นกํ•˜๊ณ  ์ˆ˜์ • ๋ชปํ•œ ํŒŒ์ผ์ด ์žˆ์–ด์„œ, ๋ฐฉ๊ธˆ ๋งŒ๋“  ์ปค๋ฐ‹์— ์‚ด์ง ์ถ”๊ฐ€

  • cherry-pick: ์ € ์ปค๋ฐ‹ ํ•˜๋‚˜๋งŒ ๋–ผ์„œ ์ง€๊ธˆ ๋ธŒ๋žœ์น˜์— ๋ถ™์ด๊ณ  ์‹ถ์„ ๋•Œ

  • reset: ์˜›๋‚  ์ปค๋ฐ‹์œผ๋กœ ์‹œ๊ฐ„ ๋Œ๋ฆฌ๊ธฐ

  • reverse: ์ด ์ปค๋ฐ‹์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋˜๋Œ๋ฆฌ๊ณ  ์‹ถ๋‹ค.

  • stash: ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ž ์‹œ ํ‚ต.์•„์ง ์ปค๋ฐ‹ ์•ˆํ•จ.

Last updated