lil.dev
Published on

๐ŸŽ‰ Git(3)-subicura ํŠœํ† ๋ฆฌ์–ผ ์ •๋ฆฌ

๊ธ€์“ด์ด

    ๐Ÿ“Œ ๋ชฉ์ฐจ

    Welcome
    1. ์‹œ์ž‘ํ•˜๊ธฐ
    2. ๊ธฐ๋ณธ ๋ช…๋ น์–ด
    3. ์ž‘์—… ๋ถ„๊ธฐ
    4. GitHub ๊ณต์œ 
    5. GitHub Flow

    1. ์‹œ์ž‘ํ•˜๊ธฐ

    ๐Ÿ’ก ์‹œ์ž‘ํ•˜๊ธฐ ํŒŒํŠธ ์š”์•ฝ

    • Git์˜ ํŠน์ง• Git์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์€ ์ด๋ ฅ ๊ด€๋ฆฌ ์ž…๋‹ˆ๋‹ค. Git์€ ๋ธŒ๋žœ์น˜branch๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ  ํ•ฉ์น˜๊ณ  ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Git์€ ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๊ณ  ๋กœ์ปฌ์— ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์‹ค์ƒ ๊ฐœ๋ฐœ์ž ์ˆ˜๋งŒํผ ๋ฐฑ์—…์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Git์€ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

    • Git์˜ ๋‹จ์  Git์€ ์•Œ๋ฉด ์•Œ์ˆ˜๋ก ๋ณต์žกํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๋งˆ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋„ ๋‹ค๋ฅด๊ณ  ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ๋„ ์ œ๊ฐ๊ฐ์ž…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ์ตํž ์ˆ˜ ์žˆ๋Š” ์ •์„์ ์ธ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

    • ๊ฐ€์ด๋“œ ์•ˆ๋‚ด

    • ์ตœ์‹  ๋ช…๋ น์–ด ์†Œ๊ฐœ - git checkout ์‚ฌ์šฉ๋ฒ•๊ณผ ํ•จ๊ป˜ ์ตœ๊ทผ ์ถ”๊ฐ€๋œ git switch, git restore ๋ช…๋ น์–ด๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

    • ์ค€๋น„


    2. ๊ธฐ๋ณธ ๋ช…๋ น์–ด

    ๐Ÿ’ก ๋‚˜์—๊ฒŒ ์ƒ์†Œํ•œ ๋ช…๋ น์–ด๋งŒ ์š”์•ฝํ•จ

    • git status # gst
    gst ๋Š” ๋ญ”๊ฐ€์š”?

    ๋ช…๋ น์–ด ๋’ค์— ์ฃผ์„์œผ๋กœ ์จ์žˆ๋Š” ๋ถ€๋ถ„์€ alias๋กœ oh-my-zsh์„ ์„ค์น˜ํ•˜๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ„์นญ์ž…๋‹ˆ๋‹ค.git status๋Œ€์‹  gst๋งŒ ์ž…๋ ฅํ•ด๋„ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. alias๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์จ๋ณด์„ธ์š”!

    • git reset [<commit>] [--soft | --mixed [-N] | --hard | --merge | --keep]
    git reset - ์ด์ „ ์ƒํƒœ๋กœ (์ด๋ ฅ ์ œ๊ฑฐ)

    ํŠน์ • ์ปค๋ฐ‹๊นŒ์ง€ ์ด๋ ฅ์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ „, ๋˜๋Š” n๋ฒˆ ์ „๊นŒ์ง€ ์ž‘์—…ํ–ˆ๋˜ ๋‚ด์šฉ์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ด์‹ฌํžˆ ์ž‘์—…ํ–ˆ๋Š”๋ฐ, ์ „ํ˜€ ์—‰๋šฑํ•œ ๊ฑธ ํ–ˆ๊ฑฐ๋‚˜ ์ž‘์—…ํ•œ ๋‚ด์šฉ์ด ํ•„์š” ์—†์–ด์งˆ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โš ๏ธ ์ด๋ ฅ์ด ์ง€์›Œ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    git reset์€ ๋‹ค์–‘ํ•œ ์˜ต์…˜์ด ์กด์žฌํ•˜๋Š”๋ฐ ์—ฌ๊ธฐ์„  --hard ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • git revert <commit>โ€ฆ
    git revert - ์ด์ „ ์ƒํƒœ๋กœ (์ด๋ ฅ ์œ ์ง€)

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

    ( Visual Studio Code ์‹ค์Šต์€ ์˜›๋‚  ๋ฒ„์ „์„ ์ด์šฉํ•ด์„œ ๋“œ๋ฆผ์ฝ”๋”ฉ ์•จ๋ฆฌ ๊ฐ•์˜๋ฅผ ์ข€ ๋” ์ฐธ๊ณ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค..)


    3. ์ž‘์—… ๋ถ„๊ธฐ

    ๐Ÿ’ก โšก๏ธ ๋ชฉํ‘œ ๋ธŒ๋žœ์น˜ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ  ํ•ฉ์น˜๊ณ  ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

    • git switch (-c|-C) <new-branch>
    git switch -c - ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

    ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค ๋•Œ, ํ˜„์žฌ ๋ธŒ๋žœ์น˜์˜ ์ƒํƒœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ๋ธŒ๋žœ์น˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ผญ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    # git checkout -b add-color # ์˜ˆ์ „ Git ๋ฒ„์ „ ๋ช…๋ น์–ด
    git switch -c add-color # gsw -c add-color
    

    โœ… git switch์˜ -c ์˜ต์…˜์€ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ๊ณผ ๋ธŒ๋žœ์น˜ ์ด๋™์„ ํ•œ๋ฒˆ์— ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

    git branch add-color
    git swtich add-color
    
    git switch - ๋ธŒ๋žœ์น˜ ๋ณ€๊ฒฝ / ๋ธŒ๋žœ์น˜ ์ถ”๊ฐ€

    add-color ๋ธŒ๋žœ์น˜์—์„œ ์ง„ํ–‰ํ•œ ์ž‘์—…์ด ๊ธฐ์กด main ๋ธŒ๋žœ์น˜์™€ ๋…๋ฆฝ์ ์ธ ๊ฒƒ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    # git checkout main # ์˜ˆ์ „ Git ๋ฒ„์ „ ๋ช…๋ น์–ด
    git switch main # gsw main, gsw ํ•œ์นธ ๋„๊ณ  <tab>์„ ๋ˆŒ๋Ÿฌ๋ณด์„ธ์š”
    
    # git checkout -b update-red # ์˜ˆ์ „ Git ๋ฒ„์ „ ๋ช…๋ น์–ด
    git switch -c update-red # gsw -c update-red
    
    conflict - ์ถฉ๋Œ ํ•ด๊ฒฐ

    ์ด ๋ถ€๋ถ„์€ 4. update-red ๋ธŒ๋žœ์น˜๋ฅผ main์œผ๋กœ ๋จธ์ง€ ํ•˜๋Š” ๋ถ€๋ถ„์ด ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ๋๋‹ค.

    red ํŒŒ์ผ ๋‚ด์šฉ
    <<<<<<< HEAD
    ๋ป˜๊ฑด์ƒ‰
    =======
    ๋ถ‰์€์ƒ‰
    >>>>>>> update-red
    

    ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ์–‘์ชฝ ๋ธŒ๋žœ์น˜์—์„œ ๋™์‹œ์— ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์„ ํ‘œ์‹œํ•ด ์ค๋‹ˆ๋‹ค. <<<<<<< , ======= , >>>>>>> ์ด ๋‚ด์šฉ์ด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ์ง€์ ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

    ์œ„์— ๋‚ด์šฉ์€ main ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์ด๊ณ  ์•„๋ž˜ ๋‚ด์šฉ์€ update-red ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์ด๋„ค์š”. ๋‘˜์ค‘์— ์–ด๋–ค ๋‚ด์šฉ์ด ๋งž๋Š”์ง€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์Šค์Šค๋กœ ํŒ๋‹จํ•˜๊ณ  ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์—ฌ๊ธฐ์„ , ๋ถ‰์€์ƒ‰๋งŒ ๋‚จ๊ธฐ๊ณ  ๋‹ค๋ฅธ ์ค„์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. <<<<<<<, ๋ป˜๊ฑด์ƒ‰, =======, >>>>>>>๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

    ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ–ˆ๋‹ค๋ฉด ๊ธฐ์กด๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ปค๋ฐ‹์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฐจ์ด์ ์€ git commit์—์„œ -m ๋ฉ”์‹œ์ง€๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ถฉ๋Œ์„ ์ˆ˜์ •ํ•œ ๋‚ด์šฉ์„ ์ž๋™์œผ๋กœ ๋ฉ”์‹œ์ง€๋กœ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.


    4. GitHub ๊ณต์œ 

    ๐Ÿ’ก โšก๏ธ ๋ชฉํ‘œ GitHub์„ ์ด์šฉํ•˜์—ฌ ์›๊ฒฉ ์ €์žฅ์†Œ์™€ ์—ฐ๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

    ๋จผ์ € GItHub์—์„œ ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ํ„ฐ๋ฏธ๋„์—์„œ

    git push - ์›๊ฒฉ ์ €์žฅ์†Œ ์ €์žฅ

    ์•ž์—์„œ ์‹ค์Šตํ–ˆ๋˜ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ GitHub์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ์ปค๋ฐ‹ ๋ชฉ๋ก์ด ๊ทธ๋Œ€๋กœ ๋ณต์ œ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

    git remote add <name> <url>
    git push [-u | --set-upstream] [<repository> [<refspec>โ€ฆ]]
    
    ์ž‘์—…
    1. main ๋ธŒ๋žœ์น˜์— ์›๊ฒฉ ์ €์žฅ์†Œ(GitHub)๋ฅผ origin(๊ธฐ๋ณธ)์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    2. ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋ฅผ main์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. (์ด๋ฏธ main์ด๋ฏ€๋กœ ์ƒ๋žต ๊ฐ€๋Šฅ)
    3. ์„ค์ •ํ•œ ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ชจ๋“  ์ปค๋ฐ‹์„ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค. u ์˜ต์…˜์„ ์ด์šฉํ•˜์—ฌ ์ดํ›„์— ํ‘ธ์‹œํ•  ๋• ๋ณ„๋‹ค๋ฅธ ์›๊ฒฉ ์ €์žฅ์†Œ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  git push๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    git remote add origin https://github.com/subicura-git/sample.git
    git branch -M main
    git push -u origin main # gp -u origin main
    

    GitHub ์ €์žฅ์†Œ์˜ ์ ‘๊ทผ๊ถŒํ•œ์ด ์ œํ•œ๋˜์–ด ์žˆ์–ด ์•„์ด๋””, ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•„์ด๋””, ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ํ‘ธ์‹œ๊ฐ€ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋งŒ ํ•˜๋ฉด ๊ทธ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ์ž…๋ ฅ์•ˆํ•ด๋„ ๋˜๋Š” ๊ฒƒ ๊ฐ™์Œ

    โœ… ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ฃผ์†Œ๋ฅผ ์„ค์ •ํ•  ๋•Œ, https์™€ ssh๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https๋Š” ์•„์ด๋””/ํŒจ์Šค์›Œ๋“œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ssh๋Š” ๊ฐœ์ธํ‚ค์™€ ๊ณต๊ฐœํ‚ค๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹ค์Šต์—์„  https ๋ฐฉ์‹์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.


    5. GitHub Flow

    Gitflow image

    ํ”Œ๋กœ์šฐ ๋ณด๋ฉด์„œ ์‹ค์Šตํ•ด๋ณด๊ธฐ..