TIL9 | Thank you - "Git & Github"

์ดํ˜•์ค€ยท2022๋…„ 4์›” 12์ผ
7
post-thumbnail

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ "ํ˜‘์—…","์†Œํ†ต"์€ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ณ , ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๊ทธ ์ด์œ ๋Š” ๋ฐฉ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ˜ผ์ž์„œ ๋ชจ๋“  ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์ด ํ˜‘์—…์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ธฐ์—ฌํ•˜๊ณ  ๋„์™€์ฃผ๋Š” Git ๊ณผ Github์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•ด ๋ด…์‹œ๋‹ค ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ



์„ค๋ช…์— ์•ž์„œ ๋ฐ‘์— ์ด๋ฏธ์ง€๋ฅผ ๋ณด์‹œ๋ฉด ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ Git๊ณผ Github์˜ ๊ด€๊ณ„๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Git?

  • ์ปดํ“จํ„ฐ ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๊ณ  ์—ฌ๋Ÿฌ ๋ช…์˜ ์‚ฌ์šฉ์ž๋“ค ๊ฐ„์— ํ•ด๋‹น ํŒŒ์ผ๋“ค์˜ ์ž‘์—…์„ ์กฐ์œจํ•˜๊ธฐ ์œ„ํ•œ ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

  • ์ž‘์—… ํŠธ๋ฆฌ(Work Tree) : ์šฐ๋ฆฌ๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ํด๋”, ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งํ•จ

  • ์ธ๋ฑ์Šค : ์ปค๋ฐ‹์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์˜ ์ €์žฅ์†Œ์™€ ์ž‘์—… ํŠธ๋ฆฌ ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ๊ณต๊ฐ„
    Staging Area๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ

  • ์Šคํ…Œ์ด์ง•(Staging) : ์ธ๋ฑ์Šค์— ํŒŒ์ผ ์ƒํƒœ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ


Github?

  • Git์„ ํ˜ธ์ŠคํŒ…ํ•ด์ฃผ๋Š” ์›น ์„œ๋น„์Šค
  • Git ์ €์žฅ์†Œ ์„œ๋ฒ„๋ฅผ ๋Œ€์‹  ์œ ์ง€ ๋ฐ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์„œ๋น„์Šค


Git Repository (์ €์žฅ์†Œ)

  • ํŒŒ์ผ์ด๋‚˜ ํด๋”๋ฅผ ์ €์žฅํ•ด ๋‘๋Š” ๊ณณ
  • ์›๊ฒฉ ์ €์žฅ์†Œ(Remote Repository)
    ํŒŒ์ผ์ด ์›๊ฒฉ ์ €์žฅ์†Œ ์ „์šฉ ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌ๋˜๋ฉฐ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ํ•จ๊ป˜ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ ์ €์žฅ์†Œ
  • ๋กœ์ปฌ ์ €์žฅ์†Œ(Local Repository)
    ๋‚ด PC์— ํŒŒ์ผ์ด ์ €์žฅ๋˜๋Š” ๊ฐœ์ธ ์ „์šฉ ์ €์žฅ์†Œ


Git์˜ ํ•ต์‹ฌ๊ธฐ๋Šฅ & ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ๋ฒ„์ „ ๊ด€๋ฆฌ : ๋ฌธ์„œ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค ์–ธ์ œ ์ˆ˜์ •ํ–ˆ๋Š”์ง€, ์–ด๋–ค ๊ฒƒ์„ ๋ณ€๊ฒฝํ–ˆ๋Š”์ง€ ํŽธํ•˜๊ณ  ๊ตฌ์ฒด์ ์œผ๋กœ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

  • ๋ฐฑ์—… : ํ˜„์žฌ ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์— ๋ณต์ œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์™ธ์žฅ ํ•˜๋“œ ๋””์Šคํฌ๋‚˜ USB ๋””์Šคํฌ ๋“ฑ์˜ ๋ณ„๋„ ์ €์žฅ ์žฅ์น˜๋ฅผ ๋งˆ๋ จํ•ด์„œ ๋ฐฑ์—…ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๋“œ๋กญ๋ฐ•์Šค๋‚˜ ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ์™€ ๊ฐ™์€ ์ธํ„ฐ๋„ท ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ๋ฐฑ์—… ๊ณต๊ฐ„์„ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐ๋„ท ์„œ๋น„์Šค ์ค‘์—๋Š” ๊นƒ ํŒŒ์ผ์„ ์œ„ํ•œ ๊ฒƒ์ด ์—ฌ๋Ÿฟ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ๊นƒ์˜ ์›๊ฒฉ ์ €์žฅ์†Œ๋ผ๊ณ  ํ•œ๋‹ค.

  • ํ˜‘์—… : ํŒ€์›๋“ค์ด ํŒŒ์ผ์„ ํŽธํ•˜๊ฒŒ ์ฃผ๊ณ  ๋ฐ›์œผ๋ฉด์„œ ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ˆ„๊ฐ€ ์–ด๋Š ๋ถ€๋ถ„์„ ์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ–ˆ๋Š”์ง€ ๊ธฐ๋ก์ด ๋‚จ์•„ ๋‚˜์ค‘์— ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ฒผ์„ ๊ฒฝ์šฐ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฝ๋‹ค.


Git flow

  • git-flow๋Š” Vincent Driessen์˜ branching model์„ ์ ์šฉํ•ด ๊ณ ์ˆ˜์ค€์œผ๋กœ ์ €์žฅ์†Œ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ™•์žฅ ๊ธฐ๋Šฅ์ด๋‹ค. branching model์€ feature - develop(dev) - release - hotfix - master ๋‹จ๊ณ„๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ๋‚˜๋ˆ  ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ „๋žต์ด๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™•์žฅ ๊ธฐ๋Šฅ(๋ช…๋ น์–ด)์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. git-flow์—๋Š” 5๊ฐ€์ง€ ๋ธŒ๋žœ์น˜๊ฐ€ ์žˆ๋‹ค. ํ•ญ์ƒ ์œ ์ง€๋˜๋Š” ์ฃผ์š” ๋ธŒ๋žœ์น˜๋“ค(master, develop)๊ณผ ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ๋งŒ ์œ ์ง€๋˜๋Š” ๋ณด์กฐ ๋ธŒ๋žœ์น˜๋“ค(feature, release, hotfix)์ด ์žˆ๋‹ค
์ €์žฅ์†Œ๋ฅผ ๋ณด๋‹ค ๊ณ ์ˆ˜์ค€์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ธŒ๋žœ์นญ ๊ด€๋ฆฌ ์ „๋žต
  • master : ๊ธฐ์ค€์ด ๋˜๋Š” ๋ธŒ๋žœ์น˜๋กœ ์ œํ’ˆ์„ ๋ฐฐํฌํ•˜๋Š” ๋ธŒ๋žœ์น˜ ์ž…๋‹ˆ๋‹ค.
  • develop : ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜๋กœ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ด ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ์ž ์ž‘์—…ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ํ•ฉ(Merge)์นฉ๋‹ˆ๋‹ค.
  • feature : ๋‹จ์œ„ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜๋กœ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜๋ฉด develop ๋ธŒ๋žœ์น˜์— ํ•ฉ์นฉ๋‹ˆ๋‹ค.
  • release : ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด master ๋ธŒ๋žœ์น˜๋กœ ๋ณด๋‚ด๊ธฐ ์ „์— ๋จผ์ € QA(ํ’ˆ์งˆ๊ฒ€์‚ฌ)๋ฅผ ํ•˜๊ธฐ์œ„ํ•œ ๋ธŒ๋žœ์น˜ ์ž…๋‹ˆ๋‹ค
  • hotfix : master ๋ธŒ๋žœ์น˜๋กœ ๋ฐฐํฌ๋ฅผ ํ–ˆ๋Š”๋ฐ ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ฒผ์„ ๋–„ ๊ธด๊ธ‰ ์ˆ˜์ •ํ•˜๋Š” ๋ธŒ๋žœ์น˜ ์ž…๋‹ˆ๋‹ค



Git ๊ธฐ๋ณธ ๋ช…๋ น์–ด

  • git init (์ƒ์„ฑํ•˜๊ธฐ) : ์ƒˆ๋กœ์šด git ์ €์žฅ์†Œ ์ƒ์„ฑ
  • git pull (๊ฐ€์ ธ์™€ ๋ณ‘ํ•ฉํ•˜๊ธฐ) : ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ์—…๋ฐ์ดํŠธ, ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ์ตœ์‹  ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ๋‚ด ๋กœ์ปฌ ์ €์žฅ์†Œ์— ๊ทธ ๋‚ด์šฉ์„ ์ ์šฉ
  • git fetch origin(๊ฐ€์ ธ์˜ค๊ธฐ)
    : ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ํ™•์ธ๋งŒ ํ•˜๊ณ  ๋กœ์ปฌ ๋ฐ์ดํ„ฐ์™€ ๋ณ‘ํ•ฉ์€ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด
    ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ตœ์‹  ์ด๋ ฅ์„ ํ™•์ธ, ๊ฐ€์ ธ์˜จ ์ตœ์‹  ์ปค๋ฐ‹ ์ด๋ ฅ์€ ์ด๋ฆ„ ์—†๋Š” ๋ธŒ๋žœ์น˜๋กœ ๋กœ์ปฌ์— ๊ฐ€์ ธ์˜ด, 'FETCH_HEAD'์˜ ์ด๋ฆ„์œผ๋กœ ์ฒดํฌ์•„์›ƒ ๊ฐ€๋Šฅ
    fetch ๋ช…๋ น์–ด ํ›„ merge ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ pull ๋ช…๋ น์–ด์™€ ๋™์ผํ•œ ๊ธฐ๋Šฅ
  • git add <์ธ๋ฑ์Šค์— ๋“ฑ๋กํ•  ํŒŒ์ผ๋ช…> (์ถ”๊ฐ€ํ•˜๊ธฐ) : ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ธ๋ฑ์Šค์— ๋“ฑ๋ก
  • git commit -m "์ปค๋ฐ‹ ๋‚ด์šฉ" (๊ธฐ๋กํ•˜๊ธฐ)
    : ์ด์ „ ์ปค๋ฐ‹ ์ƒํƒœ๋ถ€ํ„ฐ ํ˜„์žฌ ์ƒํƒœ๊นŒ์ง€์˜ ๋ณ€๊ฒฝ ์ด๋ ฅ์ด ๊ธฐ๋ก๋œ ์ปค๋ฐ‹(ํ˜น์€ ๋ฆฌ๋น„์ „)์ด ์ƒ์„ฑ
    '์ž‘์—… ํŠธ๋ฆฌ'์— ์žˆ๋Š” ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์ €์žฅ์†Œ์— ๋ฐ”๋กœ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ ์‚ฌ์ด ๊ณต๊ฐ„์ธ '์ธ๋ฑ์Šค'์— ํŒŒ์ผ ์ƒํƒœ๋ฅผ ๊ธฐ๋ก(stage - ์Šคํ…Œ์ด์ง• ํ•œ๋‹ค๊ณ  ํ‘œํ˜„)
    commit ์ง„ํ–‰ ์‹œ, ๋‚ด์šฉ ์ž…๋ ฅ ํ•„์ˆ˜
  • git push (๋ฐ€์–ด๋„ฃ๊ธฐ) : ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋Š” ๊ฒƒ
  • git clone (๋ณต์ œํ•˜๊ธฐ)
    : ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œ(์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ํ†ต์งธ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ฒƒ)
    ๋ณ€๊ฒฝ ์ด๋ ฅ๋„ ํ•จ๊ป˜ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ๋ณต์ œ๋˜์–ด ์˜ค๋ฏ€๋กœ, ์›๋ž˜ ์›๊ฒฉ ์ €์žฅ์†Œ์™€ ๋˜‘๊ฐ™์ด ์ด๋ ฅ์„ ์ฐธ์กฐํ•˜๊ณ  ์ปค๋ฐ‹ ์ง„ํ–‰ ๊ฐ€๋Šฅ
  • git reset <์˜ต์…˜> <๋Œ์•„๊ฐ€๊ณ ์‹ถ์€ ์ปค๋ฐ‹> (๋˜๋Œ๋ฆฌ๊ธฐ, ์ด๋ ฅ x)
    : ๋Œ์•„๊ฐ€๋ ค๋Š” ์ปค๋ฐ‹์œผ๋กœ ๋ฆฌํŒŒ์ง€ํ† ๋ฆฌ๋Š” ์žฌ์„ค์ •, ํ•ด๋‹น ์ปค๋ฐ‹ ์ดํ›„์˜ ์ด๋ ฅ์€ ์—†์• ๋Š” ๋ช…๋ น์–ด
  • git revert <๋˜๋Œ๋ฆด ์ปค๋ฐ‹> (๋˜๋Œ๋ฆฌ๊ธฐ, ์ด๋ ฅ o)
    : ์ƒํƒœ๋ฅผ ๋˜๋Œ๋ฆฌ๋Š” ๋ช…๋ น์–ด, reset ๋ช…๋ น์–ด์™€ ๋‹ฌ๋ฆฌ ์ด์ „ ์ด๋ ฅ์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€
  • merge (๋ณ‘ํ•ฉํ•˜๊ธฐ, ๋ฐ”๋กœ ํ•ฉ์น˜๊ธฐ)
    : ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ํ•˜๋‚˜๋กœ ๋ชจ์„ ์ˆ˜ ์žˆ์Œ ๋‚ด๊ฐ€ ๋Œ์–ด์˜จ ์ €์žฅ์†Œ๊ฐ€ ์ตœ์‹  ๋ฒ„์ „์ด ์•„๋‹Œ ๊ฒฝ์šฐ, ์ฆ‰ ๋‚ด๊ฐ€ pull ์„ ์‹คํ–‰ํ•œ ํ›„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด push ๋ฅผ ํ•˜์—ฌ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด๋ฒ„๋ฆฐ ๊ฒฝ์šฐ์—๋Š” ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋‚ด push ์š”์ฒญ์ด ๊ฑฐ๋ถ€๋  ์ˆ˜ ์žˆ์Œ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์—…๋ฐ์ดํŠธ ์ด๋ ฅ์„ ๋‚ด ์ €์žฅ์†Œ์—๋„ ๊ฐฑ์‹  ํ•ด์•ผํ•จ
  • rebase (๋ณ‘ํ•ฉํ•˜๊ธฐ, ๋ธŒ๋žœ์น˜ ์ด๋ ฅ ์žฌ์ •๋ ฌํ•˜๊ธฐ)
    : ํžˆ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ๋ณ„๋กœ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ํ˜ผ์ž์„œ๋งŒ ์ปค๋ฐ‹ํ•˜๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ๋ฏฟ์„์ˆ˜
    ์žˆ๋Š” ์†Œ์ˆ˜๋งŒ ์ปค๋ฐ‹ํ•œ๋‹ค๋ฉด merge ๋Œ€์‹  rebase ์‚ฌ์šฉ ๊ถŒ์žฅ
  • git checkout <๋ธŒ๋žœ์น˜๋ช…> (์ „ํ™˜ํ•˜๊ธฐ)
    : ์›ํ•˜๋Š” ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜ ์‹œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด

๐Ÿ‘‰ merge (๋ฐ”๋กœ ํ•ฉ์น˜๊ธฐ) vs rebase (๋ธŒ๋žœ์น˜ ์ด๋ ฅ ์žฌ์ •๋ ฌํ•˜๊ธฐ)

merge :
๋ณ€๊ฒฝ ๋‚ด์šฉ์˜ ์ด๋ ฅ์ด ๋ชจ๋‘ ๊ทธ๋Œ€๋กœ ๋‚จ์•„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ฅ์ด ๋ณต์žกํ•ด์ง
rebase :
์ด๋ ฅ์€ ๋‹จ์ˆœํ•ด์ง€์ง€๋งŒ, ์›๋ž˜์˜ ์ปค๋ฐ‹ ์ด๋ ฅ์ด ๋ณ€๊ฒฝ๋จ. ์ •ํ™•ํ•œ ์ด๋ ฅ์„ ๋‚จ๊ฒจ์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋จ.



๋ฆฌ๋ชจํŠธ(Remote) ์ €์žฅ์†Œ

  • ์ธํ„ฐ๋„ท์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์–ด๋”˜๊ฐ€์— ์žˆ๋Š” ์ €์žฅ์†Œ
  • git remote ๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ ํ™•์ธ
  • git remote add <๋‹จ์ถ•์ด๋ฆ„> :๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ ์ถ”๊ฐ€
  • git remote show <๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ ์ด๋ฆ„> :๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ ์‚ดํŽด๋ณด๊ธฐ
  • git remote rename <๊ธฐ์กด ๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ ์ด๋ฆ„> <๋ณ€๊ฒฝํ•  ๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ ์ด๋ฆ„> :๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ ์ด๋ฆ„ ๋ณ€๊ฒฝ
  • git remote remove <๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ ์ด๋ฆ„> : ๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ ์‚ญ์ œ



Branch

  • ๋…๋ฆฝ์ ์œผ๋กœ ์–ด๋–ค ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋…
  • ๊ฐ์ž ๋…๋ฆฝ์ ์ธ ์ž‘์—… ์˜์—ญ(์ €์žฅ์†Œ) ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋™์‹œ์— ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ธฐ๋Šฅ
  • git branch : ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
  • git branch : ๋ธŒ๋žœ์น˜ ์กฐํšŒ
  • git checkout : ๋ธŒ๋žœ์น˜ ์ „ํ™˜
  • git checkout -b : ๋ธŒ๋žœ์น˜ ์ž‘์„ฑ๊ณผ ์ฒดํฌ์•„์›ƒ์„ ํ•œ๊บผ๋ฒˆ์— ์‹คํ–‰
  • git merge : ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ, ์ด ๋ช…๋ น์–ด์— ๋ณ‘ํ•ฉํ•  ์ปค๋ฐ‹ ์ด๋ฆ„์„ ๋„ฃ์–ด ์‹คํ–‰ํ•˜๋ฉด, ์ง€์ •ํ•œ ์ปค๋ฐ‹ ๋‚ด์šฉ์ด 'HEAD'๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ธŒ๋žœ์น˜์— ๋„ฃ์–ด์ง€๋ฉฐ, 'HEAD'๋Š” ํ˜„์žฌ ์‚ฌ์šฉ์ค‘์ธ ๋ธŒ๋žœ์น˜์— ์œ„์น˜ํ•˜๊ฒŒ ๋จ
    'master' ๋ธŒ๋žœ์น˜์— ๋„ฃ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  'master' ๋ธŒ๋žœ์น˜์— 'HEAD'๊ฐ€ ์œ„์น˜ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•จ



Fork

  • ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ Github repository์—์„œ ๋‚ด๊ฐ€ ์–ด๋–ค ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๋„ฃ๊ณ  ์‹ถ์„ ๋•Œ ํ•ด๋‹น respository๋ฅผ ๋‚ด Github repository๋กœ ๊ทธ๋Œ€๋กœ ๋ณต์ œํ•˜๋Š” ๊ธฐ๋Šฅ

Pull Request

  • fork ๋ฐ ํŒŒ์ผ ์ˆ˜์ • ํ›„, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ Github repository์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด ํ•ด๋‹น ์ €์žฅ์†Œ์— ์š”์ฒญํ•˜๋Š” ๊ฒƒ
    pull request๊ฐ€ original repository์˜ ๊ด€๋ฆฌ์ž๋กœ ๋ถ€ํ„ฐ ์Šน์ธ ๋˜์—ˆ์œผ๋ฉด ๋‚ด๊ฐ€ ๋งŒ๋“  ์ฝ”๋“œ๊ฐ€ commit, merge๋˜์–ด original ์— ๋ฐ˜์˜




1๏ธโƒฃ ์ƒˆ ์ €์žฅ์†Œ ์ƒ์„ฑ ํ›„ Push

$ git init
$ git add .
$ git commit -m ๋ฉ”์„ธ์ง€
$ git remote add origin ์ €์žฅ์†Œ ์ฃผ์†Œ
$ git push origin master
---------> ์ตœ์ดˆ ๋ ˆํฌ ์ƒ์„ฑ ํ›„ branch ๋งŒ๋“ค๊ธฐ


2๏ธโƒฃ ์ตœ์ดˆ ๋ ˆํฌ ์ƒ์„ฑ ํ›„ branch ๋งŒ๋“ค๊ธฐ

master ๊ธฐ์ค€์œผ๋กœ branch ์ƒ์„ฑ

$ git branch feature/์ด๋ฆ„
$ git checkout feature/์ด๋ฆ„

---> ์—ฌ๊ธฐ์„œ ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ์–ด๋”˜์ง€ ํ™•์ธ (git branch ๋ช…๋ น์–ด๋กœ ์ดˆ๋ก๋ถˆ์ด ์–ด๋””์— ๋“ค์–ด์™€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ๋จ)

$ git add .
$ git status
$ git commit -m ๋ฉ”์„ธ์ง€
$ git push origin feature/์ด๋ฆ„


3๏ธโƒฃ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งŒ๋“ค์–ด ๋†“์€ ๋ ˆํฌ์—์„œ branch ๋งŒ๋“ค์–ด์„œ push ํ•  ๊ฒฝ์šฐ (๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ตœ์ดˆ ๋ ˆํฌ ์ƒ์„ฑ ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ ๋ ˆํฌ๋ฅผ git cloneํ•  ๊ฒฝ์šฐ )

$ git init
$ git remote add origin ์ €์žฅ์†Œ ์ฃผ์†Œ
$ git add .
$ git commit -m ๋ฉ”์„ธ์ง€
$ git branch ์ƒˆ ๋ธŒ๋Ÿฐ์น˜ ์ด๋ฆ„
$ git branch
$ git checkout ์ƒˆ ๋ธŒ๋Ÿฐ์น˜ ์ด๋ฆ„
$ git push origin feature/์ด๋ฆ„

profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ดํ˜•์ค€์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€