๊ด€๋ฆฌ ๋ฉ”๋‰ด

JiYoung Dev ๐Ÿ–ฅ

[Git&GitHub] Git๊ณผ Git Hub ์‚ฌ์šฉ ๊ธฐ๋ณธ ๋ณธ๋ฌธ

project

[Git&GitHub] Git๊ณผ Git Hub ์‚ฌ์šฉ ๊ธฐ๋ณธ

Shinjio 2023. 6. 13. 19:07

๐ŸŽˆ Git vs GitHub

๐Ÿ“– Git

  1. Git์€ ์‰ฝ๊ฒŒ ๋งํ•ด ๋ฒ„์ „๊ด€๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด
  2. ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๋•Œ ์ด์ „ ์ฝ”๋“œ๋กœ ๋กค๋ฐฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  3. Git์€ ๋‚ด ์ปดํ“จํ„ฐ์˜ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ธฐ๋กํ•˜์—ฌ ํŒŒ์ผ์˜ ๋ฒ„์ „์„ ๊ด€๋ฆฌ

 

๐Ÿ“– GitHub

  1. Git Hub๋Š” Git์„์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์›ํ•˜๋Š” ์›น ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค
  2. Git์€ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜‘์—…์„ ํ•˜๊ธฐ ์–ด๋ ค์šด๋ฐ Git Hub๋ฅผ ํ†ตํ•ด ๋ฒ„์ „๋ณ„ ์ฝ”๋“œ๋ฅผ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์›น ์ƒ์— ์—…๋กœ๋“œํ•˜์—ฌ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Œ

 

 

๐ŸŽˆ Git ์‚ฌ์šฉํ•˜๊ธฐ

 

Git ์‚ฌ์šฉ์ „์— Git ์„ค์น˜ ํ•„์š” 

 

1. Git ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ

๋ ˆํฌ๋ฆฌํ† ์ง€๋กœ ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ํด๋” ์ƒ์„ฑ

> ์ƒ์„ฑํ•œ ํด๋”์—์„œ ๋งˆ์šฐ์Šค ์šฐํด๋ฆญ

> git bash here

> git init ๋ช…๋ น์–ด ์ž…๋ ฅ

 

๐Ÿ”Ž git init

๋น„์–ด์žˆ๋Š” ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑ 

** ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ž€, ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฐ ๋ฒ„์ „์ด ๋‹ด๊ธฐ๋Š” ์ €์žฅ์†Œ

 

 

2. name๊ณผ email ์„ค์ • > git add > git commit

 

 

Git์˜ ์ž‘์—…์˜์—ญ

1. working directory
์ž‘์—…์„ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋””๋ ‰ํ† ๋ฆฌ
ํ˜„์žฌ ๋‚ด๊ฐ€ ๋งŒ๋“  ํด๋”์—์„œ๋Š”  GitPracticeํด๋”๊ฐ€ working directory

2. staging area
git add๋ฅผ ํ•œ ํŒŒ์ผ๋“ค์ด ์กด์žฌํ•˜๋Š” ์˜์—ญ
์ปค๋ฐ‹์„ํ•˜๊ฒŒ ๋˜๋ฉด staging area์— ์žˆ๋Š” ํŒŒ์ผ๋“ค๋งŒ ์ปค๋ฐ‹์— ๋ฐ˜์˜๋จ
 
3. repository
working directory์˜ ๋ณ€๊ฒฝ ์ด๋ ฅ๋“ค์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์˜์—ญ
์ฆ‰, ์ปค๋ฐ‹๋“ค์ด ์ €์žฅ๋˜๋Š” ์˜์—ญ

์ž‘๋™ ์ˆœ์„œ
working directory์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰
→ ์ž‘์—…ํ•œ ํŒŒ์ผ์„ git addํ•˜์—ฌ staging area์— ์—…๋กœ๋“œ
→ ์ปค๋ฐ‹์„ ํ•˜๋ฉด staging area์— ์žˆ๋˜ํŒŒ์ผ์ด repository์— ์ €์žฅ 

 

๐Ÿ”Ž git reset

staging area์—์„œ ํŒŒ์ผ ์ œ๊ฑฐ 

๊ทธ๋Ÿฌ๋‚˜ ๋ณ€๊ฒฝ๋œ ์ƒˆ ๋ชจ์Šต์€ ๊ทธ๋Œ€๋กœ working directory์— ๋‚จ์•„์žˆ์Œ

 

git ์ž์ฃผ ์“ฐ๋Š” ๋ช…๋ น์–ด ๋ชจ์Œ

git init : ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ Git์ด ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ(=working directory)๋กœ ์„ค์ •ํ•˜๊ณ  ๊ทธ ์•ˆ์— ๋ ˆํฌ์ง€ํ† ๋ฆฌ(.git ๋””๋ ‰ํ† ๋ฆฌ) ์ƒ์„ฑ

git config user.name '0000' : ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ ์•„์ด๋””๋ฅผ '0000'์œผ๋กœ ์„ค์ • (์ปค๋ฐ‹ํ•  ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด)

git config user.email '0000@00000' : ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ ์„ค์ • (์ปค๋ฐ‹ํ•  ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด)

git add [ํŒŒ์ผ ์ด๋ฆ„] : ์ˆ˜์ •์‚ฌํ•ญ์ด ์žˆ๋Š” ํŠน์ • ํŒŒ์ผ์„ staging area์— ์˜ฌ๋ฆฌ๊ธฐ
git add [๋””๋ ‰ํ† ๋ฆฌ๋ช…] : ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์—์„œ ์ˆ˜์ •์‚ฌํ•ญ์ด ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ staging area์— ์˜ฌ๋ฆฌ๊ธฐ
git add . : working directory ๋‚ด์˜ ์ˆ˜์ •์‚ฌํ•ญ์ด ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ๋“ค์„ staging area์— ์˜ฌ๋ฆฌ๊ธฐ

git reset [ํŒŒ์ผ ์ด๋ฆ„] : staging area์— ์˜ฌ๋ ธ๋˜ ํŒŒ์ผ ๋‹ค์‹œ ๋‚ด๋ฆฌ๊ธฐ

 git status : Git์ด ํ˜„์žฌ ์ธ์‹ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ๋‚ด์šฉ๋“ค ์ถœ๋ ฅ (๋ฌธ์ œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ˜„์žฌ ์ƒํƒœ ํŒŒ์•… ์œ„ํ•ด ํ™œ์šฉ)

git commit -m "์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€" : ํ˜„์žฌ staging area์— ์žˆ๋Š” ๊ฒƒ๋“ค์„ ์ปค๋ฐ‹์œผ๋กœ ๋‚จ๊ธฐ๊ธฐ

git help [์ปค๋งจ๋“œ ์ด๋ฆ„] : ์‚ฌ์šฉ๋ฒ•์ด ๊ถ๊ธˆํ•œ Git ์ปค๋งจ๋“œ์˜ ๊ณต์‹ ๋ฉ”๋‰ด์–ผ ๋‚ด์šฉ ์ถœ๋ ฅ

 

๐ŸŽˆ GitHub ์‚ฌ์šฉํ•˜๊ธฐ

 

1. git ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ์„  Git ํ—ˆ๋ธŒ๋ผ๋Š” ์™ธ๋ถ€ ์ปดํ“จํ„ฐ๋กœ ์ด๋™

 

๊นƒํ—ˆ๋ธŒ์—์„œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ƒ์„ฑ 

: ๊นƒํ—ˆ๋ธŒ์—์„œ ๋งŒ๋“  ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋˜๋Š” ๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ผ๊ณ  ํ•จ

 

๋‚ด ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ๋ ˆํฌ์ง€ํ† ๋ฆฌ = ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ

 

 

๊นƒํ—ˆ๋ธŒ์—์„œ ์ƒˆ๋กœ์šด ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์œ„์™€ ๊ฐ™์ด ๋œธ. ์ด๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์‚ฌ์šฉ

 

 

 

 

2. ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฐ”๋€ ๋‚ด์šฉ์„ ๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—๋„ ๋ฐ˜์˜ํ•˜๋Š” ๋ฒ•

 

๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹ (์•„์ง ๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—๋Š” ์ปค๋ฐ‹ ์•ˆํ•œ ์ƒํƒœ)

 

git add > git commit > git push

 

 

git push๋ฅผ ํ•ด์•ผ ๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—๋„ ์ปค๋ฐ‹ ๋ฐ˜์˜

 

 

3. ๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฐ”๋€ ๋‚ด์šฉ์„ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋ฐ˜์˜ํ•˜๋Š” ๋ฐฉ๋ฒ• 

git pull

๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋‚ด์šฉ์„ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋ฐ˜์˜

 

 

 

4. ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ : git clone 

git clone : ๊นƒํ—ˆ๋ธŒ ํ”„๋กœ์ ํŠธ์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์ œ

 

 

gitHub ์‚ฌ์šฉ์„ ์œ„ํ•œ Git ์ž์ฃผ ์“ฐ๋Š” ๋ช…๋ น์–ด ๋ชจ์Œ

git push -u origin master : ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ๋‚ด์šฉ์„ ์ฒ˜์Œ์œผ๋กœ ๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์˜ฌ๋ฆด ๋•Œ ์‚ฌ์šฉ

git push : ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ๋‚ด์šฉ์„ ๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋ณด๋ƒ„

git pull : ๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ๋‚ด์šฉ์„ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ

git clone [ํ”„๋กœ์ ํŠธ์˜ GitHub ์ƒ ์ฃผ์†Œ] : GitHub์— ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋‚ด ์ปดํ“จํ„ฐ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ

 

๐ŸŽˆ ๊นƒ ์ปค๋ฐ‹ ๋‹ค๋ฃจ๊ธฐ

1. git log

์ด์ œ๊นŒ์ง€ ํ•œ ์ปค๋ฐ‹๋“ค : ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ

์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด > git log

git log๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ์‹  ์ปค๋ฐ‹ ๋‚ด์šฉ๋ถ€ํ„ฐ ๋‚˜ํƒ€๋‚จ

 

 

 

์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ ํ•œ์ค„๋กœ ๋ณด๊ธฐ : git log --pretty=oneline

 

 

์ปค๋ฐ‹ ๋‚ด์šฉ ์ž์„ธํ•˜๊ฒŒ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ : git show id๋ช…(์•ž 4์ž๋ฆฌ ์ •๋„๊นŒ์ง€๋งŒ ์จ์ค˜๋„ ์•Œ์•„๋จน์Œ)

 

 

2. git commit (-m ์˜ต์…˜ ์—†์ด)

 

์žฅ์  : ๊ธด ์ปค๋ฐ‹ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ

 

git commit ํ›„ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฐฝ์ด ๋œธ

 

 

i ๋ˆ„๋ฅธ ํ›„ ์ปค๋ฐ‹ ์ œ๋ชฉ ์ž…๋ ฅ

์—”ํ„ฐ ๋นต๋นต

์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ž…๋ ฅ >>  ESC >> :wq ํ•˜๋ฉด ์ €์žฅ๋จ

 

 

3. git --amend : ์ตœ๊ทผ ์ปค๋ฐ‹ ์ˆ˜์ •ํ•˜๊ธฐ

์ตœ์‹ ์ปค๋ฐ‹์„ ์ˆ˜์ •ํ•ด์„œ ๋‹ค์‹œ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

 

์ปค๋ฐ‹ ์ƒ์„ฑ, ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ ๊ฐ€์ด๋“œ๋ผ์ธ
1. ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์˜ ์ œ๋ชฉ๊ณผ ์ƒ์„ธ ์„ค๋ช… ์‚ฌ์ด์—๋Š” ํ•œ ์ค„ ๋น„์›Œ๋‘๊ธฐ
2.  ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์˜ ์ œ๋ชฉ ๋’ค์— ์˜จ์ (.) ๋ถ™์ด์ง€ ์•Š๊ธฐ
3. ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์˜ ์ œ๋ชฉ์˜ ์ฒซ๋ฒˆ์งธ ์•ŒํŒŒ๋ฒณ์€ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑ
4. ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์˜ ์ œ๋ชฉ์€ ๋ช…๋ น์กฐ๋กœ ์ž‘์„ฑ
5. ์ปค๋ฐ‹์˜ ์ƒ์„ธ ๋‚ด์šฉ : ์™œ ์ปค๋ฐ‹์„ ํ–ˆ๋Š”์ง€ / ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  / ์ ์šฉํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์–ด๋–ค ํšจ๊ณผ๋ฅผ ๊ฐ€์ง€๋Š”์ง€
6. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ๋Œ€ํ•œ ์นœ์ ˆํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ธฐ

์ปค๋ฐ‹ ๊ฐ€์ด๋“œ๋ผ์ธ 
1. ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์—๋Š” ํ•˜๋‚˜์˜ ์ˆ˜์ •์‚ฌํ•ญ, ํ•˜๋‚˜์˜ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•œ ๋‚ด์šฉ๋งŒ ๋‚จ๊ธฐ๊ธฐ
2. ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ƒํƒœ๊ฐ€ ๊ทธ ๋‚ด๋ถ€์˜ ์ „์ฒด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ์ธ ๊ฒฝ์šฐ์—๋งŒ ์ปค๋ฐ‹ํ•˜๊ธฐ

 

4. git rest : ์ด์ „ ์ปค๋ฐ‹์œผ๋กœ

 

 

git reset 3๊ฐ€์ง€ ์˜ต์…˜

--hard

--mixed

--soft

 

 

 

์ž์ฃผ ์“ฐ์ด๋Š” ์ปค๋งจ๋“œ ์ •๋ฆฌ

git log : ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ ์ถœ๋ ฅ
git log --pretty=oneline : ์ปค๋ฐ‹ ํ•˜๋‚˜๋‹น ํ•œ์ค„๋กœ ์ถœ๋ ฅ

git show [์ปค๋ฐ‹ ์•„์ด๋””] : ํŠน์ • ์ปค๋ฐ‹์—์„œ ์–ด๋–ค ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ์—ˆ๋Š”์ง€ ํ™•์ธ

git commit --amend : ์ตœ์‹  ์ปค๋ฐ‹์„ ๋‹ค์‹œ ์ˆ˜์ •ํ•ด์„œ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์œผ๋กœ ๋งŒ๋“ฆ

git config alias.[๋ณ„๋ช…] [์ปค๋งจ๋“œ] : ๊ธธ์ด๊ฐ€ ๊ธด ์ปค๋งจ๋“œ์— ๋ณ„๋ช…์„ ๋ถ™์—ฌ์„œ ์ดํ›„๋กœ ๋ณ„๋ช…์œผ๋กœ ํ•ด๋‹น ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •

git diff [์ปค๋ฐ‹ A์˜ ์•„์ด๋””] [์ปค๋ฐ‹ B์˜ ์•„์ด๋””] : ๋‘ ์ปค๋ฐ‹ ๊ฐ„์˜ ์ฐจ์ด ๋น„๊ต

git reset [์˜ต์…˜] [์ปค๋ฐ‹ ์•„์ด๋””]  : ์˜ต์…˜์— ๋”ฐ๋ผ ํ•˜๋Š” ์ž‘์—…์ด ๋‹ฌ๋ผ์ง (๊ธฐ๋ณธ๊ฐ’์€ --mixed)

git tag [ํƒœ๊ทธ ์ด๋ฆ„] [์ปค๋ฐ‹ ์•„์ด๋””] : ํŠน์ • ์ปค๋ฐ‹์— ํƒœ๊ทธ๋ฅผ ๋ถ™์ž„