YOONJI
article thumbnail


 

Commit์„ ์™œ ํ• ๊นŒ?

์šฐ๋ฆฌ๊ฐ€ ์ปค๋ฐ‹์„ ๋‚จ๊ธฐ๋Š” ์ด์œ ๋Š” ์ž‘์—… ์ด๋ ฅ์„ ๊ณ„์† ๋‚จ๊ฒจ๋†“๊ณ  ์›ํ•˜๋Š” ์‹œ์ ์œผ๋กœ ์ž์œ ๋กญ๊ฒŒ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž„.

 

 

Head๋ž€?

ํ˜„์žฌ ๋‚ด๊ฐ€ ์œ„์น˜ํ•ด์žˆ๋Š” ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹๋ณ„์ž

Head๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ปค๋ฐ‹์„ ๋ฐ”๊พธ๊ฒŒ ๋˜๋ฉด ์›Œํ‚น ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ชจ์Šต๋„ Head๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ปค๋ฐ‹์˜ ๋ฒ„์ „์œผ๋กœ ๋ฐ”๋€œ.

= Head๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” Commit์˜ ๋ชจ์Šต๋Œ€๋กœ Working Directory์˜ ๋ชจ์Šต์ด ๋ฐ”๋€œ.

 

 

Head๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ปค๋ฐ‹ ๋ฐ”๊พธ๊ธฐ

์ด๋•Œ option์€ hard, mixed, soft๋กœ ๋‚˜๋‰จ.

$ git reset --{option} {์ปค๋ฐ‹ ์•„์ด๋””}

 

Hard / Mixed / Soft ์˜ต์…˜ ์ดํ•ดํ•˜๊ธฐ

 

Hard ์˜ต์…˜์€ ์œ„ํ—˜ํ•˜๋ฏ€๋กœ ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ

Mixed ์˜ต์…˜์˜ ์ƒํƒœ์—์„œ๋Š” git add ํ›„ ์ปค๋ฐ‹ ๊ฐ€๋Šฅ / ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ˆ˜์ • ํ›„ git add, ์ปค๋ฐ‹

Soft ์˜ต์…˜์˜ ์ƒํƒœ์—์„œ๋Š” ๋ฐ”๋กœ ์ปค๋ฐ‹ ๊ฐ€๋Šฅ / ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ˆ˜์ • ํ›„ git add, ์ปค๋ฐ‹

๋”๋ณด๊ธฐ

**Hard ์˜ต์…˜์€ ๋ฐ”๋กœ ์ง์ „์˜ ์ปค๋ฐ‹ ์ดํ›„๋กœ ์šฐ๋ฆฌ๊ฐ€ working directory์—์„œ ํ•œ ์ž‘์—…์ด ๋ชจ๋‘ ๋‚ ์•„๊ฐ€๋„ ์ƒ๊ด€ ์—†์„ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•  ๊ฒƒ

** Mixed์™€ Soft์˜ ์ฐจ์ด๋Š” Staging Area์˜ ๋ณ€ํ™” ์—ฌ๋ถ€์—๋งŒ ์ฐจ์ด๊ฐ€ ์žˆ์Œ

- Soft ์˜ต์…˜ ์‚ฌ์šฉ ์‹œ ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๋ฉด์„œ ๋งŒ๋“  Staging Area์˜ ์ƒํƒœ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋กœ ์ปค๋ฐ‹ ๊ฐ€๋Šฅ

- Mixed ์˜ต์…˜ ์‚ฌ์šฉ ์‹œ Staging Area์˜ ๋ชจ์Šต์ด ํ•ด๋‹น ์ปค๋ฐ‹์ฒ˜๋Ÿผ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์—

   ์ตœ๊ทผ ์ž‘์—…ํ–ˆ๋˜ ์ƒํƒœ๋ฅผ ์ปค๋ฐ‹์œผ๋กœ ๋‚จ๊ธฐ๊ณ  ์‹ถ๋‹ค๋ฉด ๊ผญ ํ•œ ๋ฒˆ์€ git add๋ฅผ ํ•˜๊ณ  ์ปค๋ฐ‹์„ ํ•ด์•ผํ•จ

 

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

์ปค๋ฐ‹ 004~006์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, mixed๋‚˜ soft ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ œ๋Œ€๋กœ ํ–ˆ๋˜ ์ปค๋ฐ‹(003)์œผ๋กœ git reset ์ง„ํ–‰

 

์ด๋•Œ working directory ๋‚ด๋ถ€๋Š” ์ตœ๊ทผ์— ์ž‘์—…ํ–ˆ๋˜ ๋‚ด์šฉ์ด ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ๊ธฐ ๋•Œ๋ฌธ์—,

์ด ์ƒํƒœ์—์„œ ๋‹ค์‹œ ์ปค๋ฐ‹์„ ํ•ด์ฃผ๋ฉด ๋งˆ์ง€๋ง‰์œผ๋กœ ์ œ๋Œ€๋กœ ํ–ˆ๋˜ ์ปค๋ฐ‹(003)์— ์ด์–ด์„œ

์ปค๋ฐ‹006์˜ ์ƒํƒœ์—์„œ ์ถ”๊ฐ€ ์ž‘์—…ํ•˜์—ฌ ์™„์„ฑํ•œ ์ปค๋ฐ‹๋ถ€ํ„ฐ ๋‹ค์‹œ ์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ์Œ“์•„๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์Œ

 

 

๊นƒ์˜ ์ƒํƒœ๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด

$ git status

 

Git reset์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์ปค๋ฐ‹์•„์ด๋”” ํ™•์ธ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด?

git reference log๋ฅผ ํ†ตํ•ด Head๊ฐ€ ๊ฐ€๋ฆฌ์ผฐ๋˜ ์ปค๋ฐ‹ ๊ธฐ๋ก์„ ๋ชจ๋‘ ๋ณด์—ฌ์ฃผ๋Š” ๋ช…๋ น์–ด

reflog๋ฅผ ํ†ตํ•ด ๋‚˜ํƒ€๋‚œ ๊ฒฐ๊ณผ์—์„œ Head@{number}์—์„œ ์ˆซ์ž๊ฐ€ ์ž‘์„์ˆ˜๋ก ์ตœ๊ทผ์˜ ๊ธฐ๋ก์„ ๋‚˜ํƒ€๋ƒ„

$ git reflog

์ปค๋ฐ‹ ์•„์ด๋””์˜ ๋‹ค๋ฅธ ํ‘œ๊ธฐ๋ฒ•

$ git reset --hard HEAD@{number}
profile

YOONJI

@๊ธฐ๋ฎจ์ง€

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!