git & github

SongEยท2022๋…„ 11์›” 2์ผ
1

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
4/6
post-thumbnail

๐Ÿ‘‰ ์ปดํ“จํ„ฐ ํฌ๋งท์œผ๋กœ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๋‹ค์‹œ ์„ธํŒ…ํ•ด์•ผํ•ด์„œ ์„ธํŒ… ๊ฒธ git ์ •๋ฆฌ๋„ ๋‹ค์‹œ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

1. git ์„ค๋ช… & ์„ค์น˜


Q. 2์ผ ์ „ ์ฝ”๋“œ๋กœ ๋˜๋Œ์•„๊ฐ€๋ ค๋ฉด?

  • ๋งค์ผ๋งค์ผ ์†์ˆ˜ ํŒŒ์ผ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค์–ด๋‘๊ฑฐ๋‚˜
  • ๋ฒ„์ „๊ด€๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด ์“ฐ๊ฑฐ๋‚˜

๋ณดํ†ต ์‚ฌ๋žŒ๋“ค์€ git ์ด๋ผ๋Š” ๋ฒ„์ „๊ด€๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์“ด๋‹ค.

1.1 ์„ค์น˜


  1. ์œˆ๋„์šฐ๋Š” git windows ๋ฒ„์ „ ๋‹ค์šด๋ฐ›์•„์„œ ์„ค์น˜ํ•˜๋ฉด ๋

  2. โœ… 2 ๊ณณ ์ฒดํฌํ•˜๊ธฐ

  3. ์ด ์ปดํ“จํ„ฐ์—์„œ git ์ฒ˜์Œ ์“ด๋‹ค๋ฉด ์ด๋ฆ„ ๋“ฑ๋ก๋ถ€ํ„ฐ

    git config --global user.email "ํ™๊ธธ๋™@naver.com"
    git config --global user.name "ํ™๊ธธ๋™"

    ์ฐจ๋ก€๋กœ ์ž…๋ ฅ

1.2 git ์‚ฌ์šฉ


  1. ์ž‘์—…ํด๋” ์—๋””ํ„ฐ๋กœ ์˜คํ”ˆ ํ›„ ํ„ฐ๋ฏธ๋„ ์ฐฝ ์—ด๊ณ 

    git init

    ์ž…๋ ฅ

  2. ์ฝ”๋“œ ์ž‘์—… ํ›„

    git add ํŒŒ์ผ๋ช…
    git commit -m '์•„๋ฌด๋ฉ”์„ธ์ง€'

    ์ฐจ๋ก€๋กœ ์ž…๋ ฅ

1.3 ์šฉ์–ด ์ •๋ฆฌ


staging area & repository

๋ฒ„์ „๋งŒ๋“ค ๋• git add, git commit ์ฐจ๋ก€๋กœ ํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆผ์œผ๋กœ ๊ทธ๋ฆฌ์ž๋ฉด ์ด๋Ÿฐ ์‹์ธ๋ฐ
์—ฌ๊ธฐ์„œ ๊ฐ€์šด๋ฐ ๋ถ€๋ถ„์„ staging area,
ํŒŒ์ผ๋ฒ„์ „์ด ์ €์žฅ๋˜๋Š” ๊ณณ์„ repository (์ €์žฅ์†Œ) ๋ผ๊ณ  ํ•œ๋‹ค.

1. staging area๋Š” commit์„ ํ•˜๊ธฐ ์ „์— commitํ•  ํŒŒ์ผ๋“ค์„ ๊ณจ๋ผ๋†“๋Š” ๊ณณ์ด๋‹ค.
๊ทธ๋ฆฌ๊ณ  staging area์— ํŒŒ์ผ๋„ฃ๋Š” ํ–‰์œ„๋ฅผ staging์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
git add ๋ช…๋ น์–ด๋กœ staging ํ•  ์ˆ˜ ์žˆ๋‹ค.

2. repository๋Š” commit๋œ ํŒŒ์ผ์˜ ๋ฒ„์ „๋“ค์„ ๋ชจ์•„๋†“๋Š” ๊ณณ์ด๋‹ค.
repository์˜ ์‹ค์ฒด๋ฅผ ๊ตฌ๊ฒฝํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์ž‘์—…ํด๋”์•ˆ์— ์ˆจ๊ฒจ์ ธ ์žˆ๋Š” .git ํด๋” ์—ด์–ด๋ณด๋ฉด ๋œ๋‹ค.

1.4 ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋“ค


  1. git add ํŒŒ์ผ๋ช…1 ํŒŒ์ผ๋ช…2

    ์ด๋ ‡๊ฒŒ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ๋™์‹œ์— ์Šคํ…Œ์ด์ง•ํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. git add .

    ์ž‘์—…ํด๋”์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์ „๋ถ€ ์Šคํ…Œ์ด์ง•ํ•˜๊ณ  ์‹ถ์œผ๋ฉด git add . ํ•˜๋ฉด ๋œ๋‹ค.

  3. git status

    ์ง€๊ธˆ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ, ์Šคํ…Œ์ด์ง•๋œ ํŒŒ์ผ ์ด๋Ÿฐ๊ฑธ ์ญ‰ ์•Œ๋ ค์ค€๋‹ค.

    ์ง€๊ธˆ ๋ญ ํ•˜๋Š”์ง€ ๊นŒ๋จน์—ˆ์„ ๋•Œ๋„ ์ž์ฃผ ์ž…๋ ฅํ•˜๊ฒŒ ๋œ๋‹ค.

  4. git restore --staged ํŒŒ์ผ๋ช…

    ์Šคํ…Œ์ด์ง•๋œ ํŒŒ์ผ์„ ์ทจ์†Œํ•˜๊ณ  ์‹ถ์œผ๋ฉด ํ•˜๋ฉด ์ด๊ฑฐ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

    ํ„ฐ๋ฏธ๋„์—์„œ ์ž์ฃผ ์•Œ๋ ค์ฃผ๋Š” ๋ช…๋ น์–ด๋ผ ์™ธ์šธ ํ•„์š”๋Š” ์—†๋‹ค.

  5. git commit -m '๋ฉ”์„ธ์ง€'

    ๋ฉ”์„ธ์ง€์— ์ฝ”๋“œ์— ๋ฌด์Šจ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ–ˆ๋Š”์ง€ ์ด๋Ÿฐ๊ฑฐ ์ ์œผ๋ฉด ๋œ๋‹ค.

2. git ์—์„œ branch ๋งŒ๋“ค๊ธฐ


2.1 branch ์ƒ์„ฑ


  1. git branch ๋ธŒ๋žœ์น˜์ด๋ฆ„

    ์ด๋Ÿฌ๋ฉด ํ”„๋กœ์ ํŠธ ์‚ฌ๋ณธ์ด ํ•˜๋‚˜ ์ƒ์„ฑ๋œ๋‹ค.

  2. git switch ๋ธŒ๋žœ์น˜์ด๋ฆ„

    ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฉ๊ธˆ ๋งŒ๋“  ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜๊ณ  ์‹ถ์œผ๋ฉด
    git switch ๋ธŒ๋žœ์น˜์ด๋ฆ„ ํ•˜๋ฉด ๋œ๋‹ค.

  • ๋‹ค์‹œ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋กœ ๋˜๋Œ์•„๊ฐ€๊ณ  ์‹ถ์œผ๋ฉด git switch main ํ•˜๋ฉด ๋œ๋‹ค. (๋‹˜๋“ค ์„ค์ •์— ๋”ฐ๋ผ main ๋ง๊ณ  master ์ผ ์ˆ˜๋„ ์žˆ์Œ)

  • ์–ด๋–ค ๋ธŒ๋žœ์น˜์— ์™€์žˆ๋Š”์ง€ ๊นŒ๋จน์—ˆ์œผ๋ฉด git status ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

Q. git log ํ•˜๋ฉด ๋‚˜์˜ค๋Š” HEAD๊ฐ€ ๋ญ”๊ฐ€์š”?

A. ํ˜„์žฌ ๋ณธ์ธ ์œ„์น˜์ด๋‹ค.

2.2 branch ํ•ฉ์น˜๊ธฐ


๊ทธ๋ž˜์„œ branch์—์„œ ์งฐ๋˜ ์ฝ”๋“œ๊ฐ€ ๋ง˜์—๋“ค๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
์›๋ณธ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” master ๋˜๋Š” main ๋ธŒ๋žœ์น˜์— ํ•ฉ์น˜๋ฉด ๋œ๋‹ค.
๋ธŒ๋žœ์น˜๋ฅผ ํ•ฉ์น˜๋Š”๊ฑธ ์ „๋ฌธ์šฉ์–ด๋กœ merge๋ผ๊ณ  ํ•œ๋‹ค.

git switch main
git merge ๋ธŒ๋žœ์น˜๋ช…

merge ํ•˜๊ณ  ์‹ถ์œผ๋ฉด

  1. main/master ๋ธŒ๋žœ์น˜๋กœ ๋‹ค์‹œ ์ด๋™ํ•˜๊ณ 
  2. git merge ๋ธŒ๋žœ์น˜๋ช… ์ž…๋ ฅํ•˜๋ฉด ํ•ฉ์ณ์ง„๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด git merge coupon ์ด๋Ÿฌ๋ฉด coupon ๋ธŒ๋žœ์น˜์˜ ์ฝ”๋“œ๋“ค์ด main/master ๋ธŒ๋žœ์น˜์— ํ•ฉ์ณ์ง„๋‹ค.

โ›” ๊ทผ๋ฐ ํ•ฉ์น  ๋•Œ ์ฃผ์˜์‚ฌํ•ญ์ด ์žˆ๋Š”๋ฐ
master ๋ธŒ๋žœ์น˜์™€ coupon ๋ธŒ๋žœ์น˜์—์„œ ๊ฐ™์€ ํŒŒ์ผ, ๊ฐ™์€ ์ค„์„ ์ˆ˜์ •ํ–ˆ์„ ๊ฒฝ์šฐ
merge conflict ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
์ด ๊ฒฝ์šฐ ์—๋””ํ„ฐ๋กœ ํ•ด๋‹น ํŒŒ์ผ์„ ์—ด์–ด๋ณด๋ฉด ์ถฉ๋Œ์‚ฌํ•ญ์ด ์ ํ˜€์žˆ๋‹ค.

โœ… ์ถฉ๋Œ์ด ๋‚œ ์ฝ”๋“œ ์ค‘ ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ์ ์šฉํ• ์ง€ ๊ณ ๋ฅด๋ฉด ๋˜๋Š”๋ฐ
<<<< / >>>> / ==== ์ด๋Ÿฐ ์“ธ๋ฐ์—†๋Š” ๊ฒƒ๋“ค์€ ๋‹ค ์ง€์šฐ๊ณ  ์›ํ•˜๋Š” ์ฝ”๋“œ๋งŒ ๋‚จ๊ธฐ๋ฉด ๋œ๋‹ค.
(VSCode ์—๋””ํ„ฐ์˜ ๊ฒฝ์šฐ Accept Incoming Change ์–ด์ฉŒ๊ตฌ ๋ฒ„ํŠผ๋“ค์„ ์ œ๊ณตํ•ด์ฃผ๋Š”๋ฐ ๊ทธ๊ฑฐ ๋ˆ„๋ฅด๋ฉด ํŽธ๋ฆฌํ•˜๋‹ค)
์–ด๋–ค ์ฝ”๋“œ๋ฅผ ๋‚จ๊ธธ์ง€ ๊ฒฐ์ •ํ–ˆ์œผ๋ฉด
git add ํŒŒ์ผ๋ช…
git commit -m '๋ฉ”์„ธ์ง€'
์ž…๋ ฅํ•˜๋ฉด ์ƒˆ๋กœ์šด commit ์„ ์ƒ์„ฑํ•ด์ฃผ๋ฉฐ merge conflict ํ•ด๊ฒฐ + ๋ธŒ๋žœ์น˜ ํ•ฉ์น˜๊ธฐ ์™„๋ฃŒ.

โค Reference


profile
front-end developer dreamer

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