๐Ÿ‘ป OS & Tools/Git

Git ์ด์šฉ๋ฒ•๊ณผ ๋ช…๋ น์–ด

๋ณต๋งŒ 2020. 2. 8. 18:25

1. Git ์„ค์น˜ ๋ฐ ์„ค์ •

sudo apt-get install git-core

#์‚ฌ์šฉ์ž ์ •๋ณด ์ถ”๊ฐ€ (ํ˜„์žฌ ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ•ด๋‹น ์ •๋ณด ์‚ฌ์šฉ)
git config --global user.name "์ด๋ฆ„"
git config --global user.email "์ด๋ฉ”์ผ ์ฃผ์†Œ"

#๊ธฐ๋ณธ ์„ค์ • ๋ฆฌ์ŠคํŠธ ํ™•์ธ
git config --list

 

 

2. Git Repository ์ƒ์„ฑ

#์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
git init

#Git ์„œ๋ฒ„์˜ ํ”„๋กœ์ ํŠธ ๋ณต์ œ
git clone [REPO_URL] [LOCAL_DIR]

 

 

3. Branch ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ

์ฐธ๊ณ : Git ๋ธŒ๋žœ์น˜ - ๋ธŒ๋žœ์น˜๋ž€ ๋ฌด์—‡์ธ๊ฐ€

 

Branch์˜ ์ž‘๋™๊ตฌ์กฐ

ํ˜„์žฌ branch๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ 'HEAD'๋ผ๊ณ  ํ•œ๋‹ค. ๊ฐ branch๋Š” ํ•˜๋‚˜์˜ commit์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค.

 

checkout์„ ํ†ตํ•ด ๋‹ค๋ฅธ branch๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ƒˆ๋กœ commit์„ ํ•˜๋ฉด ํ˜„์žฌ branch๊ฐ€ ์ƒˆ commit์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค.

 

 

Branch ๊ด€๋ จ ๋ช…๋ น์–ด

 

  • branch ๋ชฉ๋ก ํ™•์ธ
git branch
# ๋ชฉ๋ก์— *์ด ๋ถ™์–ด ์žˆ๋Š” ๊ฒƒ์ด ํ˜„์žฌ branch (HEAD)
  • branch ์ƒ์„ฑ
git branch [BRANCH_NAME]
  • branch ์ „ํ™˜
git checkout [BRANCH_NAME] # BRANCH_NAME์œผ๋กœ ์ „ํ™˜
git checkout -b [BRANCH_NAME] # branch ์ƒ์„ฑ + ์ „ํ™˜
  • branch ์‚ญ์ œ
git branch -d [BRANCH_NAME]
  • branch ์ด๋ฆ„ ๋ณ€๊ฒฝ (rename)
git branch -m [NEW_NAME] #ํ˜„์žฌ branch ์ด๋ฆ„์„ [NEW_NAME]์œผ๋กœ ๋ณ€๊ฒฝ

 

 

4. Add, Commit, Push

์ฐธ๊ณ : Git์˜ ๊ธฐ์ดˆ - ์ˆ˜์ •ํ•˜๊ณ  ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๊ธฐ

 

Git์—์„œ ํŒŒ์ผ์€ ์„ธ ๊ณณ์— ์ €์žฅ๋œ๋‹ค.

  • working directory : ํŒŒ์ผ์„ ์ž‘์—…ํ•  ๋–„ ์ง์ ‘ ์ด์šฉํ•˜๋Š” ๋กœ์ปฌ ์ž‘์—… ๊ณต๊ฐ„
  • index(stage) : ์ž‘์—… ๊ณต๊ฐ„๊ณผ ํ™•์ •๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ณต๊ฐ„ ์‚ฌ์ด์˜ buffer
  • head : ์ตœ์ข… ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

 

https://rogerdudler.github.io/git-guide/index.ko.html

 

 

๋ชจ๋“  ํŒŒ์ผ์€ ์ถ”์ ๋Œ€์ƒ(tracked)๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ํŒŒ์ผ(untracked)๋กœ ๋‚˜๋‰œ๋‹ค. ํ•œ ๋ฒˆ stage์— ์˜ฌ๋ ธ๊ฑฐ๋‚˜ clone์„ ํ†ตํ•ด ๋‚ด๋ ค๋ฐ›์€ ๋ชจ๋“  ํŒŒ์ผ์€ tracked๊ฐ€ ๋œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์„œ stage์— ํ•œ๋ฒˆ๋„ ์˜ฌ๋ฆฌ์ง€ ์•Š์€ ํŒŒ์ผ๋งŒ์ด untracked ํŒŒ์ผ์ด๋‹ค.

 

Tracked ํŒŒ์ผ์€ modified์™€ unmodified ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ์ƒํƒœ๋ฅผ ๊ฐ–๋Š”๋‹ค. Tracked ํŒŒ์ผ์ด commit๋œ ์ดํ›„๋กœ ์ˆ˜์ •๋˜๋ฉด modified ์ƒํƒœ๊ฐ€ ๋˜๊ณ , ๋‹ค์‹œ commit์„ ํ•˜๋ฉด unmodified ์ƒํƒœ๋กœ ๋ฐ”๋€๋‹ค.

 

 

 

working directory์˜ ํŒŒ์ผ ํ˜น์€ ํด๋”๋ฅผ stage์— ์˜ฌ๋ฆฐ๋‹ค.

 

# ์ „์ฒด ์ถ”๊ฐ€ (untracked ํŒŒ์ผ๊ณผ modified ํŒŒ์ผ)
git add *

# ์ผ๋ถ€ ํŒŒ์ผ ์ถ”๊ฐ€
git add (ํŒŒ์ผ๊ฒฝ๋กœ)

-> ํŒŒ์ผ์ด stage์— ์žˆ๋Š” ์ƒํƒœ

Stage๋Š” commit์— ๋ฐ˜์˜ํ•  ํŒŒ์ผ๋“ค์˜ ๋ชฉ๋ก์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. add ๋ช…๋ น์€ ํŒŒ์ผ์„ ์ƒˆ๋กœ ์ถ”์ ํ•  ๋•Œ๋„ ์‚ฌ์šฉํ•˜๊ณ , modified ์ƒํƒœ์˜ ํŒŒ์ผ์„ stage์— ์˜ฌ๋ฆด ๋•Œ๋„ ์‚ฌ์šฉํ•œ๋‹ค.

 

Stage์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.

git status

 

commit์„ ์ด์šฉํ•˜์—ฌ stage์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ ์˜ฌ๋ฆฐ๋‹ค. 

 

git commit -m "์„ค๋ช…"

-> ํŒŒ์ผ์ด head์— ์žˆ๋Š” ์ƒํƒœ. ํ•˜์ง€๋งŒ, github์—๋Š” ๋ฐ˜์˜์ด ๋˜์ง€ ์•Š๋Š”๋‹ค

 

 

ํ˜น์€, -a ์˜ต์…˜์œผ๋กœ add์™€ commit์„ ํ•œ๋ฒˆ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. (๋‹จ, ํ•œ๋ฒˆ๋„ add ๋˜์ง€ ์•Š์€ ํŒŒ์ผ์€ ๋”ฐ๋กœ add๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.)

git commit -am "์„ค๋ช…"

 

 

github repository์— commit์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

 

init์œผ๋กœ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ๊ฒฝ์šฐ, git์—๊ฒŒ ํŒŒ์ผ์„ ์˜ฌ๋ฆด github์˜ remote repository ์„œ๋ฒ„ ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์ฃผ์–ด์•ผ ํ•œ๋‹ค.

git remote add [REPO] [URL]

 

๋ณ€๊ฒฝ์‚ฌํ•ญ์„ remote repository์— ๋ฐ˜์˜ํ•œ๋‹ค.

git push [REPO] [BRANCH]

-> ํŒŒ์ผ์ด github์— ์˜ฌ๋ผ๊ฐ„ ์ƒํƒœ

 

 

5. Merge

์ฐธ๊ณ : Git ๋ธŒ๋žœ์น˜ - ๋ธŒ๋žœ์น˜์™€ Merge์˜ ๊ธฐ์ดˆ

 

๋‘ branch๋ฅผ ํ•ฉ์ณ์ฃผ๋Š” ๊ฒƒ์„ merge๋ผ๊ณ  ํ•œ๋‹ค. Merge์—๋Š” ์„ธ ๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

 

1) Feed-forward merge

 

 

master branch๋ฅผ hotfix branch๋กœ mergeํ•  ๋•Œ, hotfix branch๊ฐ€ master branch ์ดํ›„์˜ commit์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด ๊ฒฝ์šฐ๋Š” ๋‹จ์ˆœํžˆ ๊ฐ€๋ฆฌํ‚ค๋Š” commit์„ ์˜ฎ๊ฒจ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

 

git checkout master #master branch๋กœ ์ด๋™
git merge hotfix #hotfix branch๋กœ merge
git branch -d hotfix #๋™์ผํ•œ commit์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์œผ๋ฏ€๋กœ hotfix branch๋Š” ์‚ญ์ œ

 

2) 3-way merge

 

๊ฐˆ๋ผ์ง€๋Š” branch์— ์žˆ๋Š” ๋‘ branch๋ฅผ mergeํ•˜๋ ค๋Š” ๊ฒฝ์šฐ, ๊ณตํ†ต ์กฐ์ƒ์ธ ๋ถ„๊ธฐ์ ๊นŒ์ง€ ํ•จ๊ป˜ ์ด์šฉํ•˜์—ฌ 3-way merge๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Š” ๊ณตํ†ต ์กฐ์ƒ๊ณผ ๋‘ branch๋ฅผ ๋น„๊ตํ•˜์—ฌ, ์„œ๋กœ ์ˆ˜์ •๋œ ๋ถ€๋ถ„์„ ํ•ฉ์น˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

 

git checkout master
git merge iss53

๊ณตํ†ต์ ๋“ค์„ ํ•ฉ์นœ ์ƒˆ๋กœ์šด commit์ด ์ƒ์„ฑ๋˜๊ณ , ์ด commit์„ master branch๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค.

 

3) ์ถฉ๋Œ

 

๋งŒ์•ฝ ๊ฐˆ๋ผ์ง€๋Š” branch์— ์žˆ๋Š” ๋‘ branch๊ฐ€ ์„œ๋กœ ๊ฐ™์€ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ–ˆ์„ ๊ฒฝ์šฐ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๊ณ , ์ด ๊ฒฝ์šฐ์—๋Š” 3-way merge๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค. ์ด ๋•Œ๋Š” git status ๋ช…๋ น์„ ์ด์šฉํ•ด ์ถฉ๋Œ์ด ์ผ์–ด๋‚œ ๋ถ€๋ถ„์„ ํ™•์ธํ•˜๊ณ  ์ง์ ‘ ๊ณ ์ณ ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

 

6. Remote repository์™€ Remote branch

์ฐธ๊ณ : Git ์ €์žฅ์†Œ - ๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ, Git ๋ธŒ๋žœ์น˜ - ๋ฆฌ๋ชจํŠธ ๋ธŒ๋žœ์น˜

 

Remote repository: ๋กœ์ปฌ์ด ์•„๋‹Œ ์›๊ฒฉ์— ์žˆ๋Š” repository. ์ €์žฅ์†Œ๋ฅผ cloneํ•˜๋ฉด origin ์ด๋ผ๋Š” remote repository๊ฐ€ ์ž๋™์œผ๋กœ ๋“ฑ๋ก๋œ๋‹ค.

 

  • Remote repository ๋ชฉ๋ก ํ™•์ธ
git remote
  • Remote repository ์ถ”๊ฐ€ํ•˜๊ธฐ
git remote add [REPO] [URL]
#ex) git remote add pb https://github.com/paulboone/ticgit

 

Remote branch: Remote repository์— ์žˆ๋Š” branch๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ํฌ์ธํ„ฐ

Remote tracking branch: Remote branch๋ฅผ ์ถ”์ ํ•˜๋Š” branch. ๋กœ์ปฌ์—์„œ ์ž„์˜๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ณ  remote branch์˜ ์—…๋ฐ์ดํŠธ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ๋จ. <remote>/<branch>์˜ ํ˜•์‹์œผ๋กœ ๋˜์–ด ์žˆ๋‹ค. (ex: origin/master)

 

clone์œผ๋กœ ์„œ๋ฒ„์—์„œ repository๋ฅผ ๋ณต์ œํ•ด์˜ค๋ฉด git์€ ์ž๋™์œผ๋กœ origin์ด๋ผ๋Š” ์ด๋ฆ„์„ ๋ถ™ํžˆ๊ณ , ์„œ๋ฒ„์˜ master branch๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ๋งŒ๋“ ๋‹ค(origin/master). Git์€ ๋กœ์ปฌ์˜ master branch๊ฐ€ origin/matser์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•œ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ด branch์—์„œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ดํ›„ ๋กœ์ปฌ์˜ master branch์—์„œ ์ถ”๊ฐ€์ ์œผ๋กœ commit์„ ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชจ์Šต์ด ๋œ๋‹ค.

 

Remote repository์—์„œ ์†Œ์Šค ๊ฐ€์ ธ์˜ค๊ธฐ

 

Remote repository์—์„œ์˜ ์†Œ์Šค๋ฅผ ๋™๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ช…๋ น์–ด๋Š” pull๊ณผ fetch ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 

pull์€ Remote repository์˜ ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์™€ ๋กœ์ปฌ ์†Œ์Šค์™€ ๋ณ‘ํ•ฉํ•œ๋‹ค. pull์€ fetch + merge์™€ ๋™์ผํ•˜๋‹ค.

fetch๋Š” Remote repository์˜ ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•˜๊ณ  ๋ณ‘ํ•ฉํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.

 

* pull vs clone

Clone์€ init + remote + pull๊ณผ ๋™์ผํ•˜๋‹ค. ์ฆ‰ clone์€ ์ดˆ๊ธฐ ๋‹ค์šด๋กœ๋“œ์— ์‚ฌ์šฉํ•˜๊ณ , pull์€ ์ค‘๊ฐ„์ค‘๊ฐ„ remote์—์„œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š” ๋ฐ์— ์ด์šฉํ•œ๋‹ค.

 

 

Remote repository๋กœ ์†Œ์Šค ์ „์†กํ•˜๊ธฐ

 

์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š” remote repository๋กœ ๋กœ์ปฌ์˜ branch๋ฅผ pushํ•  ์ˆ˜ ์žˆ๋‹ค. ๋กœ์ปฌ repository์˜ branch๋Š” ์ž๋™์œผ๋กœ remote repository๋กœ ์ „์†ก๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, push๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ๋กœ์ปฌ์—๋งŒ ๋‘๋Š” ๋น„๊ณต๊ฐœ branch๋ฅผ ๋‘˜ ์ˆ˜๋„ ์žˆ๋‹ค.

git push [REMOTE] [BRANCH]

 

 

7. Github ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ธฐ (Fork, Pull Request)

์ฐธ๊ณ : GitHub - GitHub ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ธฐ

 

(๋งํฌ์— ์„ค๋ช…์ด ์ž˜ ๋˜์–ด ์žˆ์–ด์„œ Fork์™€ Pull Request์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์ƒ๋žตํ•จ)

 

* fork vs clone

  • Fork๋Š” GitHub ์ƒ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๊ธฐ๋Šฅ์ด๊ณ , clone์€ Git์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
  • Fork๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ github repository๋ฅผ ๋‚ด github repository๋กœ ๋ณต์ œํ•˜๊ณ , clone์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ reposity๋ฅผ ๋‚ด local ์œ„์น˜๋กœ ๋ณต์ œํ•œ๋‹ค.
  • Forkํ•œ repository์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ pull request๋ฅผ ๋ณด๋‚ด ์›๋ณธ repository์— ๋ฐ˜์˜(์„ ์š”์ฒญ)ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ณผ์ •์€ clone ํ›„ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ push๋ฅผ ํ†ตํ•ด ๋‚ด github repository๋กœ ๋ณด๋‚ธ ํ›„์—, ์ถ”๊ฐ€์ ์œผ๋กœ ์›๋ณธ repository๋กœ ํ•ด๋‹น ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

Clone (Left)์™€ Fork (Right)์˜ ์ „์ฒด์ ์ธ process (์ถœ์ฒ˜: https://www.toolsqa.com/git/difference-between-git-clone-and-git-fork/)

 

 

7. VSCode๋กœ Git ์ด์šฉํ•˜๊ธฐ (์งฑ ํŽธํ•จ)

์ฐธ๊ณ : https://demun.github.io/vscode-tutorial/git/

 

git๊ณผ ์—ฐ๋™๋œ ํด๋”๋ฅผ vscode์—์„œ ์—ด๋ฉด ์ขŒ์ธก ํƒญ์—์„œ 'Source control' ๋ฉ”๋‰ด๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋‚ด์šฉ์„ ์ˆ˜์ •ํ•˜๋ฉด 'Changes' ์•„๋ž˜์— ์ˆ˜์ •์‚ฌํ•ญ์ด ๋‚˜ํƒ€๋‚œ๋‹ค. (git status์™€ ๋™์ผ)

์œ„์˜ ์ฒดํฌํ‘œ์‹œ (๋นจ๊ฐ„ ํ™”์‚ดํ‘œ) ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ชจ๋‘ commit์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. (commit -am๊ณผ ๋™์ผ)

 

์‹ค์ œ stage, commit, push ๋“ฑ์˜ ๋ช…๋ น์–ด๋ฅผ ์ง์ ‘ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ , ๋ณด๋‹ค ์ง๊ด€์ ์œผ๋กœ ๊ธฐ๋Šฅ๋“ค์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค

๋ฌผ๋ก  ๋‹ค์–‘ํ•œ ๋ช…๋ น์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์šฐ์ธก ์ƒ๋‹จ์˜ '...' ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ณด๋‹ค ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

 

Commit์„ ํ•œ ์งํ›„์˜ ๋ชจ์Šต์ด๋‹ค. 'Sync Changes' ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚œ๋‹ค. ์ด ๋ฒ„ํŠผ์€ push๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋‘ ๊ฐœ์˜ ๋ฒ„ํŠผ๋งŒ์„ ์ด์šฉํ•ด stage->commit->push์˜ ๊ณผ์ •์„ ํ•œ๋ฒˆ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•