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

Daehyunii's Dev-blog

04. Git์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณผ๊ฑฐ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ ๋ณธ๋ฌธ

๐Ÿ“š Language & CS knowledge/Git & GitHub

04. Git์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณผ๊ฑฐ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ

Daehyunii 2022. 10. 8. 01:30

01. ๊ณผ๊ฑฐ ๋ฒ„์ „์œผ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ

  

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

 

02. reset

 

  reset ๋ฐฉ์‹์€ ์›ํ•˜๋Š” ์‹œ์ ์œผ๋กœ ๋Œ์•„๊ฐ„ ๋’ค ์ดํ›„์˜ ๋‚ด์—ญ๋“ค์„ ๋‹ค ์ง€์šฐ๋Š” ๋ฐฉ์‹์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด v1 -> v2 -> v3 -> v4 ๋กœ ์ด 4๋ฒˆ์˜ commit์„ ํ•œ ๊ฒฝ์šฐ์— reset ๋ฐฉ์‹์œผ๋กœ v2๋กœ ๋˜๋Œ์•„ ๊ฐ€๋ฉด ์ดํ›„์˜ v3,v4๋กœ commitํ•œ ๋‚ด์—ญ์€ ๋ชจ๋‘ ์ง€์›Œ์ง€๊ฒŒ ๋œ๋‹ค. ๋ฆฌ์…‹์„ ํ•˜๋Š” ๋ช…๋ น์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. reset์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์‹œ์ ์˜ commit ํ•ด์‹œ๋„ ๊ฐ™์ด ์ž…๋ ฅํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. (git log ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ ํ•ด์‹œ๋ฅผ ํ™•์ธ) ์•„๋ž˜ ์‚ฌ์ง„์—์„œ ๋…ธ๋ž€ ๊ธ€์ž์˜ commit ์˜†์— ์œ„์น˜ํ•˜๋Š” 5736๋ถ€ํ„ฐ ๋๊นŒ์ง€์ด๋‹ค.

 

<๋ช…๋ น์–ด> git reset --hard (reset์„ ์›ํ•˜๋Š” ์‹œ์ ์˜ commit ํ•ด์‹œ)

 

commit ํ•ด์‹œ

 

03. revert

 

  revert๋ฐฉ์‹์€ ๋˜๋Œ๋ฆฌ๊ธฐ ์›ํ•˜๋Š” ์‹œ์ ์˜ ์ปค๋ฐ‹์„ ๊ฑฐ๊พธ๋กœ ์‹คํ–‰ํ•œ๋‹ค. ์ฆ‰, ํžˆ์Šคํ† ๋ฆฌ์— ์ƒˆ๋กœ์šด ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด์„œ ํ•ด๋‹น ์‹œ์ ์˜ commitํ•œ ๋‚ด์—ญ์„ ๋ฐ˜๋Œ€๋กœ ์ ์šฉํ•ด์„œ ์ž๋™์œผ๋กœ ์ƒˆ๋กœ์šด commit์„ ํ•˜๊ฒŒ ๋œ๋‹ค. revert์˜ ๊ฒฝ์šฐ์—๋Š” ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ๋ชจ๋‘ ๋‚จ์•„์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜‘์—…์‹œ์— ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ , ๋˜ ์ƒˆ๋กœ์šด commit์ด ๋˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— reset์„ ํ†ตํ•ด์„œ revert ์ „์˜ ์ƒํƒœ๋กœ ๋‹ค์‹œ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค. revert ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

<๋ช…๋ น์–ด> git revert (revert๋ฅผ ์›ํ•˜๋Š” ์‹œ์ ์˜ commit ํ•ด์‹œ)

 

revert๋ฅผ ํ†ตํ•ด์„œ ๊ณผ๊ฑฐ๋กœ ๋˜๋Œ๋ฆฌ๋ฉด, ํ•ด๋‹น ์‹œ์ ์„ ๋ฐ˜๋Œ€๋กœ ์‹คํ–‰ํ•œ commit์ด ์ƒ์„ฑ๋จ