Deep_Dev
article thumbnail

โœ… Git & Github

Git : ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ 

๋ฒ„์ „์ด๋ž€ ์œ ์˜๋ฏธํ•œ ๋ณ€ํ™”๊ฐ€ ๊ฒฐ๊ณผ๋ฌผ๋กœ ๋‚˜์˜จ๊ฒƒ์ด๋‹ค. 

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ณดํ†ต ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๊ณผ ์ž‘์—…ํ•œ๋‹ค.

 

 

์ฆ‰, ํ•˜๋‚˜์˜ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ณผ์ •์—์„œ ํ˜‘์—…์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

 

๊ทธ๋ ‡๋‹ค๋ฉด, ํ•˜๋‚˜์˜ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ณผ์ •์—์„œ ๋˜๋Œ๋ฆฌ๋Š” ๊ณผ์ •๋„ ํ•„์š”ํ•˜๋‹ค.

์ด๋Š” ๋ฐฑ์—…์ด ํ•„์ˆ˜๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

 

ํ•˜๋‚˜์˜ ๋ฒ„์ „์ด ๊ด€๋ฆฌ๋˜๋Š” ๊ณผ์ •์—์„œ ํšจ์œจ์ ์ธ ๋ฐฑ์—…์ด ํ•„์š”ํ•˜๋‹ค.

 

ํฌ๊ฒŒ ์ •๋ฆฌํ•˜๋ฉด

1. ํ˜‘์—…ํ•˜๊ธฐ

2. ๋˜๋Œ๋ฆฌ๊ธฐ

3. ํšจ์œจ์ ์œผ๋กœ ๋ฐฑ์—…ํ•˜๊ธฐ

์ด 3๊ฐœ์˜ ๊ด€๋ฆฌ๋ฅผ ๋„์™€์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ Git

 

โœ… ๋ฒ„์ „์ด ๋งŒ๋“ค์–ด์ง€๋Š” ๋‘๊ฐœ์˜ ๋‹จ๊ณ„ 

  • 1๋‹จ๊ณ„ : Woring Directory -> Staging Area
    • git add '๋Œ€์ƒ์ด๋ฆ„'
  • 2๋‹จ๊ณ„ : Staging Area -> Directory
    • git commit ( ํ•˜๋‚˜์˜ ๋ฒ„์ „ )

 

โœ… ๋ฒ„์ „์ด ๋˜๊ธฐ๊นŒ์ง€ ๊ฑฐ์ณ๊ฐ€๋Š” ์„ธ๊ฐœ์˜ ๊ณต๊ฐ„

1. Working Directory ( ์ž‘์—… ๊ณต๊ฐ„ )

 

Q. WorkingDirectory์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์„ ๋ฒ„์ „์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ• ๊นŒ ?

A. ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค ์ค‘ ๋‹ค์Œ ๋ฒ„์ „์ด ๋  ํŒŒ์ผ๋“ค์„ ์„ ๋ณ„ํ•ด์„œ ์„ ๋ณ„๋œ ํŒŒ์ผ๋“ค์„ ๋ฒ„์ „์œผ๋กœ ๋งŒ๋“ค์ž 

 

2. Staging Area

- ๋ฒ„์ „์ด ๋  ํ›„๋ณด๋“ค์ด ์˜ฌ๋ผ์˜ค๋Š” ๊ณต๊ฐ„

- Working Directory์—์„œ ์„ ๋ณ„

 

3. Repository 

 

 

โœ… ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์ž‘

๐Ÿ“Œ  git init  : ์ด ํด๋”์—์„œ๋ถ€ํ„ฐ ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ์‹œ์ž‘ ( ์ดˆ๊ธฐํ™” ์ž‘์—… )

์ž…๋ ฅ ๊ฒฐ๊ณผ

Initialized empty Git repository in /Users/leesangdo/Desktop/git_tutorial/.git/

“์ด ํด๋”์—์„œ๋ถ€ํ„ฐ ๊นƒ ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ์‹œ์ž‘ํ• ๊ฑฐ์—์š””

 

๐Ÿ“Œ git status : ๋ฒ„์ „๊ด€๋ฆฌ๊ฐ€ ๋˜๊ณ  ์žˆ๋Š” ํ˜„์žฌ ํด๋”์˜ ์ƒํƒœ ํ™•์ธ

์ž…๋ ฅ ๊ฒฐ๊ณผ 

 

โœ… Working Directory -> Staging Area

๐Ÿ“Œ git add ํŒŒ์ผ์ด๋ฆ„ 

์ž…๋ ฅ ๊ฒฐ๊ณผ : ๋”ฑํžˆ ์•„๋ฌด๊ฒƒ๋„ ๋œจ์ง€ ์•Š์„ ๊ฒƒ ( = ์ž˜ ์˜ฎ๊ฒจ์กŒ๋‹ค. )

git status๋กœ ํ™•์ธํ•˜๋ฉด

๐Ÿ“Œ git -rm --cached ํŒŒ์ผ์ด๋ฆ„  : staging ๋๋˜ ๊ฒƒ์„ unstageํ•˜๋Š” ์ž‘์—…

๐Ÿ’ก ์—ฌ๋Ÿฌ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ•œ๋ฒˆ์— ์Šคํ…Œ์ด์ง• ์˜์—ญ์—์„œ ์ œ๊ฑฐํ•˜๋ ค๋ฉด -r(recursive)์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 'test'๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ๊ทธ ์•ˆ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ์—์„œ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•œ๋‹ค.

๐Ÿ“Œ git rm --cached -r test  

- unstage ์ž‘์—…์ด ์ž˜ ๋œ ๊ฒฐ๊ณผ = ๋‹ค์‹œ Untracked files:๋กœ ๋Œ์•„๊ฐ”๋‹ค.

 

๐Ÿ“Œ git add . : ํ˜„์žฌ ์›Œํ‚น๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์„ ํ•œ๋ฒˆ์— stage์— ๋‹ค ์˜ฎ๊ธฐ๋Š” ๊ฒƒ

( . ์˜๋ฏธ : ํ˜„์žฌ ์ž‘์—… ํŒŒ์ผ์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์„ Stage์— ๋‹ค ์˜ฎ๊ฒจ๋ผ )

 

์ž…๋ ฅ ๊ฒฐ๊ณผ ( = Programmers์™€ testํŒŒ์ผ ๋‘˜๋‹ค Stage์— ์˜ฌ๋ผ๊ฐ”๋‹ค )

 

 

โœ… Stage Area์— ์˜ฌ๋ผ๊ฐ„ ํŒŒ์ผ๋“ค์˜ ๋ฒ„์ „ ์ƒ์„ฑ

๐Ÿ“Œ git commit -m "์ปค๋ฐ‹๋ฉ”์„ธ์ง€ ์ž‘์„ฑ" 

์ปค๋ฐ‹๋ฉ”์„ธ์ง€ = ์–ด๋–ค ์œ ์˜๋ฏธํ•œ ๋ณ€ํ™”๋ฅผ ๋‹ด์•˜๋Š”์ง€ ๊ฐ„๋žตํ•˜๊ฒŒ ์ž…๋ ฅ

 

๐Ÿ“Œ git log : ๊ทธ ๋™์•ˆ์˜ ๋ชจ๋“  ์ปค๋ฐ‹ ๋‚ด์—ญ ํ™•์ธ

 

 

๐Ÿ”— ์ปค๋ฐ‹ ํ›„์—, ํŒŒ์ผ์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •/์ €์žฅํ•œ๋‹ค๋ฉด Working Directory์˜ ๋‚ด์šฉ์ด ๋ฐ”๋€๋‹ค.

์—ฌ๊ธฐ์„œ git status๋ฅผ ์ฐ์œผ๋ฉด ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๊ณ  ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ž…๋ ฅ ๊ฒฐ๊ณผ

"modified๋˜์—ˆ์Šต๋‹ˆ๋‹ค" = "์ˆ˜์ •์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค"

 

๐Ÿ”— ์ž ๊ทธ๋Ÿผ ์ˆ˜์ •๋œ ํŒŒ์ผ์„ ๋˜ ๋ฒ„์ „์œผ๋กœ ์˜ฌ๋ ค์•ผํ•˜๋‹ˆ

git add ํŒŒ์ผ๋ช…

git commit -m "์ปค๋ฐ‹๋ฉ”์„ธ์ง€"

๐Ÿ’ก git commit ์ž…๋ ฅํ•œ๋‹ค๋ฉด ๋” ์ž์„ธํ•˜๊ฒŒ ์ปค๋ฐ‹๋ฉ”์„ธ์ง€๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์œผ๋กœ ์ด๋™ํ•œ๋‹ค.
๐Ÿ’ก git commit -am "์ปค๋ฐ‹๋ฉ”์„ธ์ง€" : add + commit ๋™์‹œ์— ( ํ•œ๋ฒˆ์ด๋ผ๋„ ์ปค๋ฐ‹ํ•œ ํŒŒ์ผ์— ํ•œ์ •ํ•ด์„œ )

git log 

๋“ฑ์„ ํ†ตํ•ด ์ปค๋ฐ‹ํ•˜๊ณ  ํ™•์ธ

 

์˜๋ฌธ์  

โœ๏ธ git commit ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฒ„์ „์„ ๋งŒ๋“ค๋ฉด ๋‚ด ์ปดํ“จํ„ฐ ์† ์ €์žฅ์†Œ(local ์ €์žฅ์†Œ)์—๋งŒ ์ €์žฅ๋˜๋Š”๋ฐ,

์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ์›๊ฒฉ์œผ๋กœ ํ˜‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‚˜์š” ?

A. ๊ฐ์ž์˜ ์ปดํ“จํ„ฐ์—๋งŒ ์กด์žฌํ•˜๋Š” ๋ฒ„์ „(local์—์„œ ๋งŒ๋“ค์–ด์ค€ ๋ฒ„์ „)์„ ์ €์žฅ/๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์„œ๋น„์Šค๊ฐ€  GitHub 

 

โœ๏ธ ์šฉ์–ด์ •๋ฆฌ

GitHub์— ์ฝ”๋“œ๋ฅผ ์—…๋กœ๋“œ ํ•œ๋‹ค = GitHub์— " push "ํ•œ๋‹ค.

push : ๋ชจ๋“  ๋ฒ„์ „/๋‚ด์—ญ/๊ธฐ๋ก์ด ํ•œ๋ฒˆ์— ์ €์žฅ๋œ๋‹ค.

 

โœ๏ธ Local์ €์žฅ์†Œ & ์›๊ฒฉ์ €์žฅ์†Œ ? 

 

 

โœ… Github์— Pushํ•˜๊ธฐ

1. Github์—์„œ Repo ์ƒ์„ฑ

2. ๋งŒ๋“ค์–ด์ง„ Repo์—์„œ ์ค‘๊ฐ„ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์—ฌ ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅํ•œ๋‹ค. ( ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ )

์ฒซ๋ฒˆ์งธ ์ค„ ์ฝ”๋“œ : ์›๊ฒฉ์ €์žฅ์†Œ์™€ Local์ €์žฅ์†Œ ์—ฐ๊ฒฐ

์„ธ๋ฒˆ์งธ ์ค„ ์ฝ”๋“œ : Push

 

๋‘์ค„์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์‚ฌ์šฉ์ž์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

์‚ฌ์šฉ์ž์ด๋ฆ„ : github.com ๋’ค์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„

๋น„๋ฐ€๋ฒˆํ˜ธ : ํ† ํฐ ์ƒ์„ฑํ•ด์„œ ๋ถ™์—ฌ๋„ฃ๊ธฐ

 

3. Repo ์ƒ์„ฑ์™„๋ฃŒ 

 

์ดํ›„ ์„ธ๋ฒˆ์งธ๋กœ ์˜ฌ๋ฆด ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  git status > ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ™•์ธ -> git commit -am "third commit" 

git log๋กœ ํ™•์ธํ•œ ํ›„ git push ํ•˜๋ฉด github์—์„œ ์„ธ๋ฒˆ์งธ ์ปค๋ฐ‹์ด ์™„๋ฃŒ๋œ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

๐Ÿ“ ์ถœ์ฒ˜

https://www.inflearn.com/course/%EB%B9%A0%EB%A5%B4%EA%B2%8C-git

 

๋น ๋ฅด๊ฒŒ git - ํ•ต์‹ฌ๋งŒ ๊ณจ๋ผ ๋ฐฐ์šฐ๋Š” Git/Github ๊ฐ•์˜ - ์ธํ”„๋Ÿฐ

๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฒ„์ „๊ด€๋ฆฌ๋Š” ์ด์ œ ํ•„์ˆ˜ ์ง€์‹์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ดˆ์ ์ธ git ๋ช…๋ น์–ด์™€ Github ํšŒ์›๊ฐ€์ž…๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ Git๊ณผ Github๋ฅผ ๋ฐฐ์›Œ๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค :), ๐Ÿ™†๐Ÿป‍โ™€ ๋Œ€์ฒด git์ด ๋ญ๊ธธ๋ž˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ

www.inflearn.com