๐Ÿ’ป/๊ฐœ๋ฐœ

[Git] Git์˜ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ๋ฐฉ๋ฒ•

ruhz 2021. 1. 25. 16:38

0. Git

๋ญ”๊ฐ€๋ฅผ ๋งŒ๋“ค๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด, ์ปดํ“จํ„ฐ์˜ ํŠน์ • ํด๋”์— ์ž‘์—…๋ฌผ๋“ค์„ ๋„ฃ์–ด๋†“๊ฒŒ ๋œ๋‹ค. Git์€ ์ด ํด๋” ์•ˆ์— ์‹œ๊ฐ„์—ฌํ–‰์ด ๊ฐ€๋Šฅํ•œ ํ‰ํ–‰์šฐ์ฃผ๋“ค์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์•Œ๊ณ  ์žˆ๋Š” Github๋Š” ์ด Git์„ ๊ณต์œ ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ์ด๋‹ค. 

 

์‹œ๊ฐ„ ์—ฌํ–‰

์‹œ๊ฐ„ ์—ฌํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฑด ๋‚ด๊ฐ€ ์ˆ˜์Šตํ•˜๊ธฐ ์–ด๋ ค์šด ์‹ค์ˆ˜๋ฅผ ํ–ˆ์„ ๋•Œ, ํ˜น์€ ์ „์ด๋ž‘ ๋ญ๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋Š”์ง€ ํ—ท๊ฐˆ๋ฆด ๋•Œ ์–ธ์ œ๋“  ํด๋” ๋‚ด ์ƒํƒœ๋ฅผ ๊ณผ๊ฑฐ๋กœ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์•„์˜ˆ ๋ชจ๋“  ํŒŒ์ผ์˜ ์ €์žฅ๋œ ์ƒํƒœ๋ฅผ ์•„๊นŒ๋กœ, ์—Š๊ทธ์ œ๋กœ, ํ˜น์€ ๋งจ ์ดˆ๊ธฐ๋กœ ๋Œ๋ฆด ์ˆ˜ ์žˆ๊ณ  ํŠน๋ณ„ํžˆ ์–ด๋–ค ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์ฑ™๊ฒจ์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

 

ํ‰ํ–‰ ์šฐ์ฃผ

๋งŒ์•ฝ ํ˜„์žฌ ์ฝ”๋“œ์—์„œ ์‹œ๋„ํ•ด๋ณด๊ณ  ์‹ถ์€ ๊ฒƒ์ด ์žˆ๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•ด๋ณด๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด, ์ฝ”๋“œ์˜ ํ‰ํ–‰์šฐ์ฃผ๋ฅผ ๋งŒ๋“ค์–ด ์‹œ๋„๋ฅผ ํ•ด๋ณด๋‹ค๊ฐ€ ๋งˆ์Œ์— ๋“ค๋ฉด ๋‹ค์‹œ ํ•ฉ์น  ์ˆ˜๋„ ์žˆ๋‹ค. 

 

 

 

1. Git ์‚ฌ์šฉ๋ฒ•

Git์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•์€ CLI(Command line Interface)๋กœ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•, Source Tree์™€ ๊ฐ™์ด GUI(Graphical User Interface)๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์žˆ๋‹ค. CLI๋Š” ๋”ฐ๋กœ ์„ค์น˜ํ•ด์ค„ ํ•„์š”๋Š” ์—†๊ณ  ๋‹ค์Œ 3๊ฐ€์ง€๊ฐ€ ์„ค์น˜๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜์ž.

 

CLI๋กœ Git ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

์ด ๋ฐฉ๋ฒ• ๋ง๊ณ ๋„ VS์—์„œ Ctrl + ' ๋กœ ์—ด์–ด๋„ ๊ฐ€๋Šฅ

git ์ €์žฅ์†Œ ์ƒ์„ฑ

git init	// git ์ €์žฅ์†Œ ์ƒ์„ฑ
git config --global user.name "(๋‚ด์ด๋ฆ„)"	// ์ด๋ฆ„ ๋“ฑ๋ก
git config --global user.email "(๋‚ด ๋ฉ”์ผ์ฃผ์†Œ)"	// ์ด๋ฉ”์ผ ๋“ฑ๋ก

์ž‘์—…์„ ๋งˆ์น˜๋ฉด .git ํŒŒ์ผ์ด ์ˆจ๊น€ํŒŒ์ผ๋กœ ์ƒ์„ฑ๋œ๋‹ค. ์ด ํŒŒ์ผ์— ๊ด€๋ฆฌ์— ํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ๊ธฐ๋ก๋˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์‚ญ์ œํ•  ๋• ์ด ํŒŒ์ผ์„ ์ง€์›Œ๋ฒ„๋ฆฌ๋ฉด ๋œ๋‹ค.

 

ํ˜„์žฌ ์‹œ์ ์„ ์ €์žฅ

git status	// ํ˜„์žฌ git์˜ ์ƒํƒœ ํ™•์ธ
git add -A	// ํด๋”์˜ ๋ชจ๋“  ๊ฒƒ์„ ํƒ€์ž„์บก์Š ์•ˆ์— ๋‹ด๊ฒ ๋‹ค(stage ํ•˜๊ฒ ๋‹ค)
git commit -m "ํƒ€์ž„์บก์Š์— ๋Œ€ํ•œ ์„ค๋ช…"	// ๋‚˜์ค‘์— ๊บผ๋‚ผ ๋•Œ๋ฅผ ๋Œ€๋น„ํ•ด ์„ค๋ช…์„ ๋‹ฌ๊ณ , ํƒ€์ž„์บก์Š์„ ๋ฌป๊ฒ ๋‹ค
git log		// git์˜ ํƒ€์ž„์บก์Š๋“ค์„ ํ™•์ธ

add๋กœ ํƒ€์ž„์บก์Š ์•ˆ์— ํŒŒ์ผ์„ ๋‹ด๋Š”๋‹ค. commit๋กœ ํƒ€์ž„์บก์Š์„ ๋ฌป๋Š”๋‹ค. ๋‹ค์‹œ ๋งํ•˜๋ฉด, add๋กœ git์ด ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก stage์— ํŒŒ์ผ๋“ค์„ ์˜ฌ๋ฆฌ๊ณ , commit์œผ๋กœ ํ˜„์žฌ ํด๋” ์ƒํƒœ๋ฅผ ์‚ฌ์ง„์ฐ์–ด ๋ฒ„์ „์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ์ž์„ธํ•œ ์‚ฌํ•ญ์€ ๋งํฌ๋ฅผ ์ฐธ๊ณ !

 

๊ณผ๊ฑฐ๋กœ ๋Œ์•„๊ฐ€๊ธฐ

git log		// ํ•ด๋‹น ํƒ€์ž„์บก์Š์˜ ๋ฒˆํ˜ธ ํ™•์ธ
git reset "์ผ๋ จ๋ฒˆํ˜ธ" --hard	// ์ด ํƒ€์ž„์บก์Š ์ดํ›„์˜ ๋ณ€๊ฒฝ์ ๋“ค์€ ๋ชจ๋‘ ์‚ญ์ œ
git revert "์ผ๋ จ๋ฒˆํ˜ธ"	// ์ด ํƒ€์ž„์บก์Š์˜ ๋ณ€๊ฒฝ์ ๋“ค์„ ์ทจ์†Œํ•œ ํƒ€์ž„์บก์Š์„ ์ƒˆ๋กœ ๋ฌป๋Š”๋‹ค

reset์€ ํ•ด๋‹น ํƒ€์ž„์บก์Š๋กœ ๋Œ์•„๊ฐ€๊ณ  ์ด ํ›„์˜ ์ž‘์—…๋“ค์€ ๋ชจ๋‘ ์ทจ์†Œํ•˜๋Š” ๊ฒƒ์ด๊ณ , revert๋Š” ํ•ด๋‹น ์ž‘์—…์œผ๋กœ ๋ณ€๊ฒฝ๋œ ๊ฒƒ๋“ค์„ ์ทจ์†Œํ•œ ์บก์Š์„ ์ƒˆ๋กœ ๋ฌป๋Š” ๊ฒƒ์ด๋‹ค. reset์€ ํ•œ ๋ฒˆ ํ•˜๋ฉด ๋Œ์•„๊ฐˆ ์ˆ˜ ์—†์œผ๋‹ˆ ์‹ ์ค‘ํžˆ ํ•˜๋„๋ก ํ•˜์ž.

 

branch ์ƒ์„ฑ

git branch "branch ์ด๋ฆ„"	// ๊ธฐ์กด branch "master"์—์„œ ์ƒˆ๋กœ์šด ํ‰ํ–‰์šฐ์ฃผ ์ƒ์„ฑ
git checkout "branch ์ด๋ฆ„"	// ํ•ด๋‹น branch ํ‰ํ–‰์šฐ์ฃผ๋กœ ์ด๋™
git merge "branch ์ด๋ฆ„"		// ํ˜„์žฌ ์žˆ๋Š” ์šฐ์ฃผ์—๋‹ค๊ฐ€ ํ•ด๋‹น์ด๋ฆ„์„ ๊ฐ€์ง„ ํ‰ํ–‰์šฐ์ฃผ์˜ ๋ณ€๊ฒฝ์ ๋“ค์„ ๊ฐ€์ ธ์™€ ํ•ฉ์นจ
git log --graph --all --decorate	// ํ‰ํ–‰์šฐ์ฃผ์—์„œ์˜ ์ž‘์—…๋‚ด์—ญ์„ ๋ณด์—ฌ์คŒ

๋ฌผ๋ก  ์ข€ ๋” ์ต์ˆ™ํ•ด์ ธ์•ผ๊ฒ ์ง€๋งŒ, ์ฃผ์„์„ ์ฝ์–ด๋ณด๋ฉด ์ •๋ง ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์ด ์•„๋‹ ์ˆ˜ ์—†๋‹ค! ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ๋‹ค๋ฅธ ์šฐ์ฃผ์—์„œ ํŠน์ • ๋ถ€๋ถ„์„ ๋‹ค๋ฅด๊ฒŒ ์ˆ˜์ •ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? conflict๋ฅผ ํ•ด๊ฒฐํ•˜๋ผ๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋œฌ๋‹ค. ๋‘˜ ์ค‘ ํ•œ ์ชฝ์„ ์ง€์›Œ์ฃผ๊ณ  add ๋ฐ commit์„ ํ•ด์ฃผ์ž! ์—ฌ๋Ÿฌ branch์—์„œ ์ž‘์—…ํ•œ๋‹ค๋ฉด ๊ฐ™์€ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋„๋ก ์กฐ์‹ฌํ•˜๋„๋ก ํ•˜์ž.

 

rebase ํ•˜๊ธฐ

git rebase "branch ์ด๋ฆ„"	// merge์ฒ˜๋Ÿผ ๊ฐ€์ง€๋ฅผ ๊ธฐ๋‘ฅ์— ๋‹ค์‹œ ํ•ฉ์น˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ๊ฐ€์ง€๋ฅผ ๋–ผ๋‹ค ๊ธฐ๋‘ฅ์— ์ด์–ด๋ถ™์ž„
git branch -D "branch ์ด๋ฆ„"	// ๋‹ค ์“ด branch๋ฅผ ์‚ญ์ œ

 

 

 

์œ„ ๋‚ด์šฉ์€ '์–„ํŒํ•œ ์ฝ”๋”ฉ์‚ฌ์ „'์„ ๋ณด๊ณ  ์ •๋ฆฌ ๋ฐ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.