IT knowledge/VCS

Git fundamentals (w/GitHub)

metamong 2022. 3. 31.

๐Ÿ– ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•˜๋Š” Git

 

* ์ €๋ฒˆ ์‹œ๊ฐ„์— couresra ๊ฐ•์ขŒ์—์„œ VCS์— ๋Œ€ํ•ด์„œ ๋ฐฐ์› ์Œ

 

What is VCS?

* VCS(Version Control System) concepts ๐Ÿ’๐Ÿป‍โ™‚๏ธ GOAL of VCS = 'To Keep track of Changes made to our files' → when try to manage some changes in IT, it's super important to have detailed historic..

sh-avid-learner.tistory.com

* ์ด์ œ VCS์˜ ์ผ์ข…์ธ Git์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž! (์ถ”๊ฐ€๋กœ GitHub๊นŒ์ง€)

 

(์ฐธ๊ณ ๋กœ git์€ ๊ทธ๋ฆผ์œผ๋กœ ์ดํ•ดํ•˜๋Š”๊ฒŒ BEST๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง์ ‘ ํ•ด๋ณด๋Š”๊ฒŒ ์žฅ๋•ก!)

 

<ํƒ€ VCS ์ข…๋ฅ˜์™€ Git์˜ ์ฐจ์ด์ ?>

Git์€ ์ผ์ข…์˜ snapshot์„ ์ฐ์–ด ๋ณด๊ด€ํ•œ๋‹ค

'Instead, Git thinks of its data more like a series of snapshots of a miniature filesystem. With Git, every time you commit, or save the state of your project, Git basically takes a picture of what all your files look like at that moment and stores a reference to that snapshot. To be efficient, if files have not changed, Git doesn’t store the file again, just a link to the previous identical file it has already stored. Git thinks about its data more like a stream of snapshots.'

โ–ถ ์ฆ‰ ํƒ€ VCS๋Š” ๊ธฐ์กด file์ด ์žˆ์œผ๋ฉด ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ƒ๊ธธ ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๊ธฐ์กด file์— ๋ฐ˜์˜ํ•˜๋Š”, file-based changes๋กœ (delta-based Version Control) ์ €์žฅ๋˜๋Š”๋ฐ / Git์€ ์ˆœ๊ฐ„์ˆœ๊ฐ„์˜, ์ผ์ข…์˜ snapshot์„ ์นด๋ฉ”๋ผ๋กœ ์ฐ์–ด๋‚ด๋“ฏ์ด ๋ณ€ํ™”๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ์ „์ฒด์˜ snapshot ์ˆœ๊ฐ„์„ ์ €์žฅํ•œ๋‹ค. 

 

- ํƒ€ VCS(์ƒ๋‹จ)์™€ git(ํ•˜๋‹จ)์˜ ์ฐจ์ด์  (๊ทธ๋ฆผ) -

 


- ์›๊ฒฉ GitHub ์ €์žฅ์†Œ์™€ ํ•จ๊ป˜: git ๊ด€๋ จ ๋ช…๋ น์–ด - 

 

* local ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•˜๋Š” git & ๊ทธ๋ฆฌ๊ณ  ์›๊ฒฉ์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์ž‘์—… ๊ฐ€๋Šฅํ•œ GitHub๊นŒ์ง€ ํ•ฉ์ณ์„œ - ์„œ๋กœ ๊ฐ„์˜ ๊ด€๊ณ„๋กœ ์•Œ์•„๋ณด๋ฉด..

 

 

๐Ÿ– Git์€ ์ฝ”๋“œ์˜ ์—ฌ๋Ÿฌ ๋ณ€๊ฒฝ ์ด๋ ฅ๋“ค๊ณผ ๊ธฐ๋ก๋“ค์„ ์‰ฝ๊ฒŒ ์ถ”์ ํ•˜๊ณ  ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— '์ฝ”๋”ฉ์˜ ํ•„์ˆ˜ ๊ธฐ์ˆ ' ์ค‘ ํ•˜๋‚˜

๐Ÿ– ๋”ฐ๋ผ์„œ ์ถ”์  & ์ €์žฅ ๊ธฐ๋Šฅ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” git์„ ํ†ตํ•ด ์ด์ „ ๊ธฐ๋ก์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜๋„ ์žˆ์Œ (๋‹น์—ฐํžˆ ์ž‘์—…๋ฌผ์„ ๋‚จ๊ธธ ์ˆ˜๋„ ์žˆ์Œ)

(CLI ๋ฟ ์•„๋‹ˆ๋ผ GUI๋กœ๋„ ์ตœ๊ทผ์— git์„ ์ง€์›ํ•ด์คŒ - ์„ธ์ƒ๋งŒ์‚ฌ ํŽธํ•ด์ง ๐Ÿ˜ธ ใ…Žใ…Ž)

๐Ÿ– ์˜ˆ๋ฅผ ๋“ค์–ด ์ตœ์‹  ๋ฒ„์ „์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ & ๋˜๋Š” ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ๋‹ค๋ฅด๊ฒŒ ๋งŒ๋“œ๋Š” ๋“ฑ, ์—ฌ๋Ÿฌ ๋ฒ„์ „์„ ๋งŒ๋“ค์–ด (์ผ์ข…์˜ branch๋กœ ๋‚˜์—ดํ•ด) ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” GIT


โ‰ชGit์„ ์‚ฌ์šฉํ•ด GitHub์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์œ„์™€ ์•„๋ž˜  ๋‘ ๊ทธ๋ฆผ์— ๋ชจ๋‘ ์ •๋ฆฌ๋จ! ์™„์ „ ๊น”.๋”. ๐Ÿ‘โ‰ซ

 

๐ŸŒŸ local์ด remote๋กœ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ๋ฒ• / ๋ฐ˜๋Œ€๋กœ remote์—์„œ local๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋‘ ๋ฐฉํ–ฅ ๋ชจ๋‘ ๊ณต๋ถ€ํ•ด ๋ณด์ž ๐ŸŒŸ

 

๐ŸŒŸ ๋จผ์ € git init์œผ๋กœ git ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ ๐ŸŒŸ

 

→ ์ผ๋‹จ ํ•ด๋‹น ์œ„์น˜์— 'git์œผ๋กœ remoteํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ฒ ๋‹ค'๋ผ๊ณ  ์„ ์–ธํ•˜๋Š” git ๋ช…๋ น์–ด์ด๋‹ค. 

(+) .gitignore ์ƒ์„ฑ - git์œผ๋กœ ์›๊ฒฉ ์œ„์น˜์™€ ์™”๋‹ค๊ฐ”๋‹ค ํ•˜๊ธฐ ์–ด๋ ค์šด file๋“ค์ด๋‚˜ git์œผ๋กœ publicํ•˜๊ฒŒ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋ฉด ์•ˆ๋˜๋Š”, ๋ณด์•ˆ์ƒ์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์„๋งŒํ•œ ๋ชจ๋“  file๋“ค์ด๋‚˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์€ gitignore file์„ ์ƒ์„ฑํ•ด ํ•ด๋‹น ํŒŒ์ผ์— ์ €์žฅํ•œ๋‹ค.

 

โ‘  GitHub → local repo๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ

 

1> ๋จผ์ € ํ•ด๋‹น repo๋ฅผ ๋‚ด GitHub ๊ณ„์ •์˜ repo๋กœ forking

 

2> fork๋œ ๋‚ด ๊ณ„์ •์˜ repo ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ•ด git clone ๋’ค์— ๋ถ™์—ฌ ๋‚ด local๋กœ ๊ฐ€์ ธ์˜ด

(์—ฌ๊ธฐ์„œ git remote -v๋ฅผ ์‚ฌ์šฉํ•ด ์›๊ฒฉ์œผ๋กœ ์—ฐ๊ฒฐ์ด ๋œ branch ์ด๋ฆ„๊ณผ ์ƒํƒœ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ)

 

โ˜… ์—ฌ๊ธฐ์„œ! git clone & git pull & git fetch & git merge ? ์ฐจ์ด์  โ˜…

 

๐Ÿ‘† git pull์€ ํ˜„์žฌ ๋‚ด๊ฐ€ local์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” '๋„์ค‘์—' ์›๊ฒฉ repo์˜ ์ƒˆ๋กœ์šด ๋‚ด์šฉ์„ local๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ

โœŒ๏ธ git clone์€ ์• ์ดˆ์— ์ฒ˜์Œ ์ž‘์—…ํ•  ๋•Œ ์ดˆ๋ฐ˜์— ์›๊ฒฉ repo ๋‚ด์šฉ ๋ชจ๋‘๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ

(git clone ์ฒ˜์Œ์—๋งŒ! ์ดํ›„ ์›๊ฒฉ repo update๋  ๋•Œ๋งˆ๋‹ค git pull๋กœ ์กฐ๊ธˆ์”ฉ ์กฐ๊ธˆ์”ฉ local๋กœ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ BEST)

 

๐ŸคŸ git pull = git fetch + git merge

 

- ์—ญ์‹œ ๊ทธ๋ฆผ์„ ํ†ตํ•ด ํ™•์ธํ•˜๋ฉด - (master branch๊ฐ€ ์•„๋‹ˆ๋ผ 'main' branch์ž…๋‹ˆ๋‹ค. ์ธ์ข…์ฐจ๋ณ„์šฉ์–ด ๊ธˆ์ง€๋จ) -

 

 

git fetch๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” branch๋ฅผ trackingํ•˜๊ณ  ์žˆ๋Š” ์›๊ฒฉ branch๋กœ๋งŒ fetchํ•œ๋‹ค

→ ๊ทธ๋ฆฌ๊ณ  git merge ๊ณผ์ •์„ ํ†ตํ•ด remote branch์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ˜„์žฌ ๋‚ด local branch๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

→ ๊ทธ๋ฆฌ๊ณ  ์ด git fetch + git merge ๊ณผ์ •์„ ํ•ฉ์นœ ๊ฒŒ 'git pull' ๊ณผ์ •!

 

โ–ฆ ์—ฌ๊ธฐ์„œ git fetchํ•œ ๋’ค ํ˜„์žฌ local branch์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด tracking๋˜์–ด ์žˆ๋‹ค๋ฉด, git mergeํ•˜๋Š” ๊ณผ์ •์—์„œ conflict! ์ถฉ๋Œ ๋ฐœ์ƒ (์ฃผ์˜!) โ–ฆ

 

Q. ๊ทธ๋ ‡๋‹ค๋ฉด, ๋„๋Œ€์ฒด ์™œ, git pull ํ•œ๋ฒˆ์— ํ•˜๋ฉด ๋ ๊ฑธ, ์™œ git fetch + git merge ์ด๋ ‡๊ฒŒ ๋‚˜๋ˆˆ ๊ฒƒ์ผ๊นŒ?

A. for ํ˜‘์—…!

→ ํ•œ ํ”„๋กœ์ ํŠธ์— ์—ฌ๋Ÿฌ developer๋“ค์ด ๋‹ค์–‘ํ•œ branch์— ์ž‘์—…์„ ํ•˜๊ณ  main branch์— mergingํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น ํ…๋ฐ, ์—ฌ๊ธฐ์„œ ํ•œ developer๊ฐ€ ์™ธ๋ถ€์—์„œ fetchingํ•ด์„œ ๊ฐ€์ ธ์˜จ ์ž‘์—…๋“ค์„ ๋ฐ”๋กœ mergingํ•˜๋Š” ์ž‘์—…๊นŒ์ง€ ๊ฑฐ์นœ๋‹ค๋ฉด, ๋‹ค๋ฅธ developer๋“ค์˜ ๋™์˜ ์—†์ด ๋ฐ”๋กœ local branch์— ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๊ฐ™์ด ํ˜‘์—…ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ผ์ข…์˜ developer๋“ค๋ผ๋ฆฌ ์ผ๊ด€๋œ consensus๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•˜๊ณ , ๋™์˜๋ฅผ ์–ป์œผ๋ฉด git merge ์ง„ํ–‰, ์•„๋‹ˆ๋ฉด ์ทจ์†Œํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ๋ฐŸ๊ฒŒ ๋œ๋‹ค!

 

3> branch ํ™•์ธ(git branch) + ์‚ฌ์šฉํ•  branch working directory๋กœ ๊ฐ€์ ธ์˜ค๊ณ (git checkout) ์ž‘์—… ์‹œ์ž‘!

→ ์ผ๋‹จ ์—ฌ๋Ÿฌ branch๊ฐ€ ์žˆ๋Š” ์ง€ ํ™•์ธํ•œ๋‹ค. default๋กœ๋Š” main์ด๋‚˜ ํŒŒ์ƒ๋œ ๋‹ค๋ฅธ branch๊ฐ€ ์žˆ๋Š” ์ง€ git branch๋กœ ํ™•์ธ
(git branch -al์ด๋ฉด ์›๊ฒฉ ํฌํ•จ ๋ชจ๋“  branch ์ข…๋ฅ˜ ์ถœ๋ ฅ)

→ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋‹ค๋ฅธ branch์—์„œ ์ž‘์—…์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด git checkout --branchname์„ ํ†ตํ•ด ์ž‘์—… branch๋ฅผ switching!

 


โ‘ก ๋‚ด working directory์—์„œ ์ž‘์—…ํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ GitHub์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ (git clone ๊ฒฐ๊ณผ ๋‚ด local์—์„œ ๋งŒ๋“ค์–ด์ง„ localrepo)

 

1> working directory์—์„œ ์—ฌ๋Ÿฌ ํŒŒ์ผ๋“ค์„ ์ˆ˜์ •ํ•˜๋Š” ๋“ฑ ์ž‘์—…์„ ์™„๋ฃŒํ•˜์˜€๋‹ค๋ฉด staging area์— ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด git add

→ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ด์ œ git์— ์˜ํ•ด ์ถ”์ ๋˜๊ธฐ ์‹œ์ž‘ (git add ./์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  file์ด staging area๋กœ ์˜ฌ๋ผ๊ฐ€๋Š”๋ฐ ์ด๋Š” ์œ„ํ—˜ํ•˜๋ฏ€๋กœ ์ •ํ™•ํžˆ commitํ•  ๋Œ€์ƒ์ด ๋˜๋Š” file๋“ค๋งŒ git์— ๊ธฐ๋ก๋˜๊ฒŒ๋” git add ๋’ค์˜ ์ผ๋ถ€ ํŒŒ์ผ๋“ค๋งŒ ์˜ฌ๋ฆฐ๋‹ค)

 

2> git add๋œ staging area์—์„œ ์ตœ์ข…์ ์œผ๋กœ git commit -m 'commit message'๋ฅผ ์‚ฌ์šฉํ•ด local repo์— ์˜ฌ๋ฆฌ๊ธฐ (์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ํ•„์ˆ˜)

(โ€ป git status๋ฅผ ํ†ตํ•ด ์–ด๋–ค file๋“ค์ด working directory, staging area, localrepo์— ์žˆ๋Š” ์ง€ ์—ฌ๋Ÿฌ ์ƒํƒœ๋“ค์„ ํ•œ ๋ˆˆ์— ์•Œ ์ˆ˜ ์žˆ์Œ)

 

Q. ์™œ staging area๋ฅผ ๋”ฐ๋กœ ๋‘ฌ์„œ git add & git commit ์ด๋ ‡๊ฒŒ ๋‘ ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ํ•˜๋Š” ๊ฑธ๊นŒ์š”?

A. (by Stackoverflow)

-1- 'staging helps you split up one large change into multiple commits' : ๋กœ์ปฌ์— ์—ฌ๋Ÿฌ ๋ณ€๊ฒฝ๋“ค์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด ๋ณ€๊ฒฝ๋“ค์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋”ฐ๋กœ ์›๊ฒฉ repo์— ์˜ฌ๋ฆฌ๊ณ , ๋‹ค๋ฅธ ํŒ€์›๋“ค์ด ๊ฐ ๋ณ€๊ฒฝ๋“ค์„ ์ ˆ์ฐจ์ ์œผ๋กœ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ - ๋ณ€๊ฒฝ๋“ค ๋ถ€๋ถ„๋ถ€๋ถ„๋งˆ๋‹ค git commit์„ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์กด์žฌ!

 

-2- 'staging helps in reviewing changes' : staging ๋‹จ๊ณ„์— ์žˆ๋Š” file๋“ค์„ git diff๋ฅผ ์‚ฌ์šฉํ•ด (git commit ํ•˜๊ธฐ ์ด์ „) ์—ฌ๋Ÿฌ ๋ณ€ํ™”๋“ค์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ git์„ ์‚ฌ์šฉํ•ด ์šฐ๋ฆฌ๋Š” ์ตœ์ข…์ ์œผ๋กœ ์–ด๋–ค ๋ถ€๋ถ„์— ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ์–ด๋–ค ๋ณ€ํ™”๊ฐ€ ์žˆ๋Š” ์ง€ ์„ธ์‹ฌํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Œ!

 

-3- 'staging helps when a merge has conflicts' : merge๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด staging area์— ๋‚ด์šฉ์ด ๋ฐ˜์˜๋œ๋‹ค (branch ํ•ฉ๋ณ‘!) 

 

-4- 'staging helps you keep extra local files hanging around' : ํ˜ผ์ž ์ถ”๊ฐ€์ ์œผ๋กœ local file์„ ์ˆ˜์ •ํ•˜๊ณ  ๋ฐ˜์˜ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ํ•ด๋‹น branch์— ์žˆ๋Š” ์ž‘์—…์„ ๋ฐ”๋กœ commitํ•˜๊ฑฐ๋‚˜ ์ผ๋ถ€๋งŒ staging area์— ์˜ฌ๋ ค ๋‚˜๋งŒ ๋‚˜๋ฆ„๋Œ€๋กœ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค!

 

-5- 'staging helps you sneak in small changes' : ํฐ ์ž‘์—…์„ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, ์ผ๋ถ€ ๋ณ€ํ™”๋งŒ ๋ฐ˜์˜์„ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์‰ฝ๊ฒŒ staging area์— ์žˆ๋Š” ์ผ๋ถ€๋งŒ commitํ•ด์„œ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” staging area๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€๋ฅผ ๊ณจ๋ผ์„œ commitํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ !

 

(+) git log๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ (์—ฌ๋Ÿฌ commit ๊ธฐ๋ก ํ™•์ธ ๊ฐ€๋Šฅ)

 

3> git push๋กœ ๋‚ด GitHub ๊ณ„์ • remote repo์— ์˜ฌ๋ฆฌ๊ธฐ

→ ex) git push origin main - origin์ด๋ผ๋Š” ์›๊ฒฉ branch์— ๋‚ด local ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•œ main branch๊ฐ€ ์˜ฌ๋ผ๊ฐ

 

4> GitHub ์‚ฌ์ดํŠธ์—์„œ forked๋œ ๋‚ด repo์— pull request ๋ฒ„ํŠผ ํด๋ฆญ! (main repo ๊ด€๋ฆฌ์ž์˜ ์Šน์ธ์ด ๋‚˜๋ฉด ๋ฐ˜์˜)

→ ์ด์ œ ์‹ค์ œ main hosting GitHub repo์— ๋‚ด๊ฐ€ ์ง์ ‘ ๋ณ€๊ฒฝํ•œ ๋ถ€๋ถ„์ด commit message์™€ ํ•จ๊ป˜ ์‹ค์ œ PR๋กœ ๋ฐ˜์˜๋œ๋‹ค

 

* ๊ฐ„๋‹จํ•˜๊ฒŒ git & github ๊ธฐ์ดˆ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ด„ ๐Ÿ (๊ผญ ๊ธฐ์–ตํ•  ๋ถ€๋ถ„!) *


* ๊ทธ๋ฆผ ์ถœ์ฒ˜) https://velog.io/@kbs5665/Git-Workflowpair-programming

* ์ถœ์ฒ˜ - git ์„ค๋ช… ๊ณต์‹ docu) https://www.git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F

* ์ถœ์ฒ˜) fetch vs. pull - https://medium.com/@sabbirhossain_70520/git-fetch-vs-git-pull-691823ed4239

* ์ถœ์ฒ˜) https://www.daleseo.com/git-init/

* ์ถœ์ฒ˜) https://kimcoder.tistory.com/288

* ์ถœ์ฒ˜) https://stackoverflow.com/questions/49228209/whats-the-use-of-the-staging-area-in-git

'IT knowledge > VCS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

What is VCS?  (0) 2022.03.31

๋Œ“๊ธ€