๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Git ๊ธฐ์ดˆ ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•: ๊นƒ์˜ ๊ธฐ๋ณธ์„ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋ฐฐ์šฐ๊ธฐ ๐ŸŒฑ

okrestart 2024. 10. 30.

 

๋ฒ„์ „ ๊ด€๋ฆฌ์˜ ์‹œ์ž‘์€ ๋ฐ”๋กœ Git! ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋ถ€ํ„ฐ ์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž๊นŒ์ง€ ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Git์˜ ๊ธฐ์ดˆ ๋ช…๋ น์–ด ๋ฅผ ๋‹ค๋ฃจ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. git init ์œผ๋กœ ์ƒˆ๋กœ์šด ์ €์žฅ์†Œ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , git add ์™€ git commit ์„ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅํ•˜๋ฉฐ, git status ์™€ git log ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

1. Git ๊ธฐ์ดˆ ๋ช…๋ น์–ด ์•Œ์•„๋ณด๊ธฐ

Git์„ ๋ฐฐ์šฐ๋ ค๋ฉด ๊ธฐ๋ณธ ๋ช…๋ น์–ด์˜ ์—ญํ• ๊ณผ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ์„ ์ž˜ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Git์˜ ๊ธฐ๋ณธ์ ์ธ ํ๋ฆ„์„ ์•„๋ž˜ ํ‘œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ช…๋ น์–ด ์—ญํ•  ์„ค๋ช…
git init ์ƒˆ๋กœ์šด Git ์ €์žฅ์†Œ ์ƒ์„ฑ ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ Git์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
git add ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง€์— ์ถ”๊ฐ€ ์ปค๋ฐ‹ ์ „ ์ค€๋น„ ์ƒํƒœ๋กœ ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง€์— ์ถ”๊ฐ€
git commit ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅ์†Œ์— ์ปค๋ฐ‹ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅํ•˜๊ณ  ์ด๋ ฅ์„ ๋‚จ๊น๋‹ˆ๋‹ค.
git status ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ ํŒŒ์ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ์Šคํ…Œ์ด์ง€ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
git log ์ปค๋ฐ‹ ์ด๋ ฅ ํ™•์ธ ์ €์žฅ์†Œ์˜ ๋ชจ๋“  ์ปค๋ฐ‹ ์ด๋ ฅ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

 

์ด์ œ ๊ฐ ๋ช…๋ น์–ด๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ๋‹ค๋ค„๋ณด๋ฉฐ ์‚ฌ์šฉ๋ฒ•๊ณผ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

2. git init ์œผ๋กœ ์ƒˆ๋กœ์šด ์ €์žฅ์†Œ ์‹œ์ž‘ํ•˜๊ธฐ

Git ์ €์žฅ์†Œ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋จผ์ € ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ ์„ค์ •ํ•˜๊ณ  git init ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

mkdir MyProject
cd MyProject
git init

์œ„ ๋ช…๋ น์–ด๋Š” ์ƒˆ๋กœ์šด ํด๋”๋ฅผ ์ƒ์„ฑ ํ•˜๊ณ , Git ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ํ˜„์žฌ ํด๋”๋ฅผ Git์ด ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค. git init ์„ ์‹คํ–‰ํ•œ ํ›„, .git ์ด๋ผ๋Š” ์ˆจ๊น€ ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, ์ด ํด๋” ์•ˆ์— Git์ด ์ถ”์ ํ•  ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

Tip : ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ”„๋กœ์ ํŠธ์— Git์„ ์ ์šฉํ•˜๋ ค๋ฉด ํ•ด๋‹น ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ์ด๋™ํ•œ ํ›„ git init ์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

3. git add ์™€ git commit ์œผ๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅํ•˜๊ธฐ

ํ”„๋กœ์ ํŠธ์—์„œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•œ ํ›„, Git์€ ์ž๋™์œผ๋กœ ํŒŒ์ผ์„ ์ถ”์ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ์ด๋•Œ git add ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง€ ์— ์˜ฌ๋ฆฌ๊ณ , git commit ์œผ๋กœ ์ปค๋ฐ‹ํ•˜์—ฌ ์ด๋ ฅ์„ ๋‚จ๊น๋‹ˆ๋‹ค.

git add ์‚ฌ์šฉ ์˜ˆ์‹œ

git add myfile.txt

์œ„ ๋ช…๋ น์–ด๋Š” myfile.txt ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง€์— ์ถ”๊ฐ€ํ•˜์—ฌ, ๋‹ค์Œ ์ปค๋ฐ‹์— ํฌํ•จ๋˜๋„๋ก ์ค€๋น„์‹œํ‚ต๋‹ˆ๋‹ค.

git add .
  • git add . ์€ ํ˜„์žฌ ํด๋” ๋‚ด ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์„ ์Šคํ…Œ์ด์ง€์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

git commit ์‚ฌ์šฉ ์˜ˆ์‹œ

git commit -m "์ดˆ๊ธฐ ํŒŒ์ผ ์ถ”๊ฐ€"
  • -m ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” ๋‚˜์ค‘์— ์ด๋ ฅ์„ ํ™•์ธํ•  ๋•Œ ์–ด๋–ค ๋ณ€๊ฒฝ์ด ์žˆ์—ˆ๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ๋Š” ์ค‘์š”ํ•œ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ ์‚ฌ์šฉ ์˜ˆ์‹œ : ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ์— ๋‹ค์–‘ํ•œ ํŒŒ์ผ์„ ํ•œ ๋ฒˆ์— ์ถ”๊ฐ€ํ•  ๋•Œ git add . ์™€ git commit ์„ ์—ฐ์ด์–ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

4. git status ์™€ git log ๋กœ ์ƒํƒœ ํ™•์ธํ•˜๊ธฐ

์ž‘์—… ์ค‘ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด git status ๋ฅผ, ์ปค๋ฐ‹ ์ด๋ ฅ์„ ํ™•์ธํ•˜๋ ค๋ฉด git log ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

git status ์‚ฌ์šฉ ์˜ˆ์‹œ

git status

์ด ๋ช…๋ น์–ด๋Š” ์Šคํ…Œ์ด์ง€ ์ƒํƒœ์™€ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ๋ชฉ๋ก ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํ˜„์žฌ ์Šคํ…Œ์ด์ง€์— ์ถ”๊ฐ€๋œ ํŒŒ์ผ, ์•„์ง ์ถ”์ ๋˜์ง€ ์•Š์€ ํŒŒ์ผ ๋“ฑ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ปค๋ฐ‹ ์ „ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

git log ์‚ฌ์šฉ ์˜ˆ์‹œ

git log

git log ๋ช…๋ น์–ด๋Š” ํ˜„์žฌ ์ €์žฅ์†Œ์˜ ๋ชจ๋“  ์ปค๋ฐ‹ ์ด๋ ฅ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฐ‹ํ•œ ์‚ฌ๋žŒ, ๋‚ ์งœ, ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด, ํ”„๋กœ์ ํŠธ์˜ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tip : git log --oneline ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ์ปค๋ฐ‹์„ ํ•œ ์ค„๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

git log --oneline

์œ„ ๋ช…๋ น์–ด๋Š” ์ปค๋ฐ‹ ์ด๋ ฅ์„ ํ•œ ์ค„๋กœ ์š”์•ฝํ•ด ๋ณด์—ฌ์ฃผ์–ด, ๋น ๋ฅด๊ฒŒ ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ํ™•์ธํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

Git ๊ธฐ์ดˆ ๋ช…๋ น์–ด ์‚ฌ์šฉ ๋นˆ๋„์™€ ํŠธ๋ Œ๋“œ ๐Ÿ“Š

Git์€ ์ „ ์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋„๋ฆฌ ์‚ฌ์šฉํ•˜๋ฉฐ, GitHub ํ†ต๊ณ„์— ๋”ฐ๋ฅด๋ฉด ๋งค์ผ ์ˆ˜๋ฐฑ๋งŒ ๊ฑด ์ด์ƒ์˜ ์ปค๋ฐ‹ ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ git init , git add , git commit ์€ ํ•„์ˆ˜์ ์ธ ๋ช…๋ น์–ด๋กœ, ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋“ค์ด ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ์— ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 


 

FAQ ๐Ÿค”

Q1. git init ์€ ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜์š”?
A1. git init ์€ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๋˜๋Š” ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ Git์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Q2. git add ์™€ git commit ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?
A2. git add ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ ค ์ปค๋ฐ‹ ์ค€๋น„๋ฅผ ํ•˜๊ณ , git commit ์€ ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ฆฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•˜์—ฌ ๋ฒ„์ „ ์ด๋ ฅ์— ๋‚จ๊น๋‹ˆ๋‹ค.

Q3. git status ๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•˜๋‚˜์š”?
A3. git status ๋Š” ํ˜„์žฌ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์—ฌ, ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ปค๋ฐ‹ํ•ด์•ผ ํ•  ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Q4. git log ์—์„œ ํŠน์ • ์ปค๋ฐ‹๋งŒ ํ™•์ธํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
A4. git log --oneline ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•œ ์š”์•ฝ์œผ๋กœ ์ปค๋ฐ‹ ์ด๋ ฅ์„ ํ•œ๋ˆˆ์— ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q5. ๋ชจ๋“  ํŒŒ์ผ์„ ํ•œ๊บผ๋ฒˆ์— ์Šคํ…Œ์ด์ง€์— ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
A5. git add . ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ํด๋”์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ Git์˜ ๊ธฐ์ดˆ ๋ช…๋ น์–ด๋ฅผ ์ดํ•ดํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณด์„ธ์š”! Git์„ ํ†ตํ•ด ์ž‘์—… ์ด๋ ฅ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ๋ฐฐ์šฐ๋ฉด ํ”„๋กœ์ ํŠธ์˜ ํ’ˆ์งˆ๊ณผ ์ƒ์‚ฐ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€