ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • GIT ๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ, ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ
    Topic/git 2022. 2. 15. 13:47
    ๋ฐ˜์‘ํ˜•

    GIT Branch ๐ŸŒฒ

    ๋ธŒ๋žœ์น˜: ๋…๋ฆฝ์ ์œผ๋กœ ์–ด๋–ค ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋…์ด๋‹ค.

     

    ๋ธŒ๋žœ์น˜์˜ ์žฅ์ 

    1. ํ•œ ์†Œ์Šค ์ฝ”๋“œ์—์„œ ๋™์‹œ์— ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    2. ์†Œ์Šค์ฝ”๋“œ์˜ ํ•œ ์‹œ์ ๊ณผ ๋™์ผํ•œ ์ƒํƒœ๋ฅผ ๋งŒ๋“ค๊ณ , ๋ธŒ๋žœ์น˜๋ฅผ ๋„˜๋‚˜๋“ค๋ฉฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    3. ๊ฐ๊ฐ์˜ ๋ธŒ๋žœ์น˜์—์„œ ์ƒ๊ธด ๋ณ€ํ™”๊ฐ€ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์ฝ”๋”ฉ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    Chapter 1. ํ˜ผ์ž ์ž‘์—…ํ•  ๋•Œ

     

    ๊น€์ฝ”๋”ฉ์ด๋Š” forkํ•œ codestates ๊นƒํ—™ ๋ฆฌํŒŒ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณธ์ธ์˜ local์—์„œ ์ž‘์—…ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์‚ฌํ•œ ๊นƒํ—™ ๋ฆฌํŒŒ์ง€ํ† ๋ฆฌ ์ฃผ์†Œ๋Š” https://github.com/kimcoding/test.git ์ž…๋‹ˆ๋‹ค.

    $ git clone https://github.com/kimcoding/test.git

     

    local working directory์—์„œ index.js ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด๊ณผ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋“ค์ด ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

     

    $ git status

     

    local ์˜ index.js ํŒŒ์ผ์„ staging area๋กœ ์˜ฎ๊ธฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    git add index.js

     

    local ์˜ index.js ํŒŒ์ผ์„ staging area๋กœ ์˜ฎ๊ธฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    git add index.js

     

    ๋‚ด ๊นƒํ—™ ๋ฆฌํŒŒ์ง€ํ† ๋ฆฌ์— 'index.js ์ˆ˜์ •' ์ด๋ผ๊ณ  ์ปค๋ฐ‹ ๊ธฐ๋ก์„ ๋‚จ๊ธฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    git commit -m 'index.js ์ˆ˜์ •'

     

    ์•—.. index.js ํŒŒ์ผ์—์„œ ์˜คํƒ€๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์–ด์š”. ์ˆ˜์ •์„ ํ•ด์•ผํ•˜๋Š”๋ฐ ๋ถˆํ•„์š”ํ•œ ์ปค๋ฐ‹์„ ๋˜ ํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ปค๋ฐ‹ํ•œ ๊ธฐ๋ก์„ ๋˜๋Œ๋ ค์„œ ์ด์ „์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ์š”?
    git reset HEAD~1

     

    ์ˆ˜์ •์„ ์™„๋ฃŒํ–ˆ์–ด์š”! ๋‹ค์‹œ index.js ํŒŒ์ผ์„ staging area๋กœ ์˜ฎ๊ฒจ๋ณผ๊นŒ์š”?
    git add index.js

     

    ์•„๊นŒ์™€ ๊ฐ™์ด 'index.js ์ˆ˜์ •' ์ด๋ผ๋Š” ๋ฉ”์‹œ์ง€๋กœ ์ปค๋ฐ‹ ๊ธฐ๋ก์„ ๋‚จ๊ฒจ๋ด…์‹œ๋‹ค.
    git commit -m 'index.js ์ˆ˜์ •'

     

    ๋‚ด ๊นƒํ—™ origin ๋ฆฌํŒŒ์ง€ํ† ๋ฆฌ์˜ main์œผ๋กœ ํ‘ธ์‰ฌํ•ฉ๋‹ˆ๋‹ค.
    git push origin main

     

    ๋‚ด ์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด๋ณด์„ธ์š”.
    git log

     

     

    Chapter 2. ํ•จ๊ป˜ ์ž‘์—…ํ•  ๋•Œ

     

    ๊น€์ฝ”๋”ฉ์€ local working directory๋ฅผ Git์˜ ๊ด€๋ฆฌ ํ•˜์— ๋“ค์–ด๊ฐ€๊ฒŒ ํ•ด ์ฃผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    git init

     

    ํ˜ผ์ž ์ž‘์—…์„ ์กฐ๊ธˆ ์ง„ํ–‰ํ•˜๊ณ  commit ๊ธฐ๋ก์„ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋‚ด Remote Repository์™€ ์—ฐ๊ฒฐํ•ด์„œ Remote ์ƒ์—๋„ ์ด ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•ด์•ผ๊ฒ ์–ด์š”. origin์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋‚ด Remote Repository๋ฅผ ๋“ฑ๋กํ•˜์„ธ์š”.
    ๋‚ด Repository ๋งํฌ๋Š” https://github.com/kimcoding/test ์ž…๋‹ˆ๋‹ค.
    git remote add origin https://github.com/kimcoding/test

     

    ํŽ˜์–ด์™€ ํ•จ๊ป˜ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ main ๋ธŒ๋žœ์น˜์— ์ปค๋ฐ‹ํ•œ ๊ธฐ๋ก์„ ๋ฐฉ๊ธˆ ๋“ฑ๋กํ•œ origin remote repository์— ์˜ฌ๋ ค์„œ, ํŽ˜์–ด์—๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด์•ผ๊ฒ ์–ด์š”.
    git push origin main

     

    ํŽ˜์–ด๊ฐ€ ๋‚ด Remote Repository๋ฅผ Fork ํ–ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์–ด์˜ Remote Repository๋ฅผ ๋‚ด Local์— pair๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋“ฑ๋กํ•ด์•ผ๊ฒ ์–ด์š”. ํŽ˜์–ด์˜ ๋ฆฌํŒŒ์ง€ํ† ๋ฆฌ ๋งํฌ๋Š” https://github.com/pair/test ์ž…๋‹ˆ๋‹ค.
    git remote add pair https://github.com/pair/test

     

    ๋ฆฌ๋ชจํŠธ ๋ฆฌํŒŒ์ง€ํ† ๋ฆฌ๊ฐ€ ์ž˜ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์ด ๋งž๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์š”. ์—ฐ๊ฒฐ๋œ ๋ฆฌ๋ชจํŠธ ๋ฆฌํŒŒ์ง€ํ† ๋ฆฌ์˜ ๋ชฉ๋ก๊ณผ ์ฃผ์†Œ๋“ค์„ ํ™•์ธํ•ด ๋ณผ๊นŒ์š”?
    git remote -v

     

    ๋ฆฌ๋ชจํŠธ ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋‹ˆ ํŽ˜์–ด์™€ ๋‚˜๋ˆ„์–ด์„œ ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด commit์„ Pushํ•˜๊ธฐ ์ „์— ํŽ˜์–ด๊ฐ€ ์ž‘์—…ํ•ด์„œ ๋ณธ์ธ์˜ Remote Repository์— ์˜ฌ๋ ค ๋†“์€ ๋‚ด์šฉ์„ ํ•ฉ์น˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์–ด์˜ ์ฝ”๋“œ๋ฅผ ๋‚ด Local๋กœ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์„๊นŒ์š”?
    git pull pair main

     

    ํŠน์ • commit ์‹œ์ ์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ๊ธฐ ๋‹ค๋ฅธ commit์„ ๋งŒ๋“ค๋ฉด, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž๋™์œผ๋กœ merge๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋‚ด Remote Repository์—๋„ Local์˜ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•ฉ์‹œ๋‹ค.
    git push origin main

     

    ๋‚ด๊ฐ€ footer.html ํŒŒ์ผ์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…ํ•œ ์‚ฌํ•ญ์„ commit ํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € staging area์— ์ž‘์—…ํ•œ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.
    git add footer.html

     

    staging area์— ํŒŒ์ผ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 'footer ์ˆ˜์ •' ์ด๋ผ๋Š” ๋ฉ”์‹œ์ง€๋กœ commit ์„ ์ง„ํ–‰ํ•ด์ฃผ์„ธ์š”.
    git commit -m 'footer ์ˆ˜์ •'

     

    ํŽ˜์–ด๋„ footer.html์— ๋ณ€๊ฒฝํ•œ ์‚ฌํ•ญ์ด ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์ปค๋ฐ‹์„ Remote์— ํ‘ธ์‹œํ•˜๊ธฐ ์ „์— ํŽ˜์–ด์˜ ์ฝ”๋“œ๋ฅผ ๋‚ด ์ปดํ“จํ„ฐ๋กœ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์„๊นŒ์š”?
    git pull pair main

     

    ์•—.. ํ•˜ํ•„ ํŽ˜์–ด๋„ footer.html ํŒŒ์ผ์˜ ๋™์ผํ•œ ๋ผ์ธ์„ ์ˆ˜์ •ํ–ˆ๊ตฐ์š”. ํŽ˜์–ด๊ฐ€ ์ž‘์„ฑํ•œ ํŒŒ์ผ๊ณผ์˜ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
    ...์ถฉ๋Œ์ด ์ƒ๊ธด ๋ถ€๋ถ„์˜ ์ˆ˜์ •์„ ์™„๋ฃŒํ–ˆ์–ด์š”! ๋‹ค์‹œ Remote Repository์— Push ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ˆ˜์ •ํ•œ ํŒŒ์ผ์„ staging area์— ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.
    git add .

     

    ์ถฉ๋Œ์ด ํ•ด๊ฒฐ๋œ ํ›„ staging area์— ์˜ฌ๋ผ๊ฐ„ ํŒŒ์ผ์€ ์ž๋™์œผ๋กœ commit ๋ฉ”์‹œ์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ž๋™ ์ƒ์„ฑ๋œ commit ๋ฉ”์‹œ์ง€๋ฅผ ์ ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
    git commit

     

    ๋‹ค์Œ๊ณผ ๊ฐ™์ด merge commit ๋ฉ”์‹œ์ง€๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋‚ด Remote Repository์—๋„ Local Repository์˜ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•ฉ์‹œ๋‹ค.
    git push origin main

     

     

    Chapter 3. ๋ธŒ๋žœ์น˜ ์ด์šฉ

     

    Github ์—์„œ ๊ณต๋™ ํ”„๋กœ์ ํŠธ Repository๋ฅผ ์ƒ์„ฑํ–ˆ์–ด์š”. ๊ฐ์ž์˜ Repository๋กœ Fork ํ•˜๊ณ  clone ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งก์€ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ feat/signup ์ด๋ผ๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•ด ๋ณผ๊นŒ์š”?
    git checkout -b feat/signup

     

    feat/signup ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑํ•œ ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก๊ณผ ๋‚ด๊ฐ€ ํ˜„์žฌ ์–ด๋–ค ๋ธŒ๋žœ์น˜์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ด…์‹œ๋‹ค.
    git branch

     

    ๊ธฐ๋ณธ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค! ์—ฌ๊ธฐ์— ์ถ”๊ฐ€๋กœ ํŽ˜์ด์Šค๋ถ์œผ๋กœ ๊ฐ€์ž…ํ•˜๊ธฐ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์š”. ๊ตฌํ˜„ํ•ด๋†“์€ ๊ธฐ๋ณธ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ์ด ๋ง๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ feat/signup-oauth ๋ธŒ๋žœ์น˜๋ฅผ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด์„œ ์ž‘์—…ํ•ด ๋ณผ๊นŒ์š”?
    git checkout -b feat/signup-oauth

     

    ์†Œ์…œ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ๊นŒ์ง€ ๊ตฌํ˜„์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค! ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ์„ feat/signup ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € feat/signup ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜์„ธ์š”.
    git checkout feat/signup

     

    feat/signup-oauth ๋ธŒ๋žœ์น˜์˜ ๋‚ด์šฉ์„ feat/signup ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
    git merge feat/signup-oauth

     

    ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ์™„๋ฃŒ๋œ feat/signup ๋ธŒ๋žœ์น˜๋ฅผ Remote Repository๋กœ ์—…๋กœ๋“œํ•˜์„ธ์š”.
    git push origin feat/signup

     

    ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ๋„ ์ถ”๊ฐ€๋ฅผ ํ•ด ๋ณด๋ ค๊ณ  ์‹œ๋„ํ•˜๋‹ค๊ฐ€ ์–ด๋ ค์›Œ์„œ ๊ทธ๋งŒ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…ํ•˜๋˜ ์ฝ”๋“œ๋ฅผ ์ž ์‹œ ๋‹ค๋ฅธ ๊ณต๊ฐ„์— ์ €์žฅํ•ด ๋‘˜ ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”?
    git stash

     


     

    ๋ฐ˜์‘ํ˜•
Designed by LEO.