commit๋ง ์ฃผ๊ตฌ์ฅ์ฐฝ ํ๋ค ๋ณด๋ฉด ์ค์ํ ๋๊ฐ ์๋ค. ๋คํํ git์ ๋ฒ์ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ์ด๋ผ ์ธ์ ๋ ์ด์ ์ํ๋ก ๋์๊ฐ๊ฑฐ๋ ๋ฌธ์ ๋ฅผ ์ทจ์ํ ์ ์๋ค. ๊ฐ๊ฐ git restore, git revert, git reset ๋ช
๋ น์ด๋ก ํ์ผ ๋ณต๊ตฌ, ์ปค๋ฐ ์ทจ์, ์๊ฐ ๋๋๋ฆฌ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ค.
์ฐธ๊ณ ๋ก ์ค๋ ๋ฐฐ์ธ ๋ด์ฉ์ ํฌ๊ฒ ๋ง์ด ์ฐ๋ ๋ด์ฉ์ ์๋๋ผ์ ๋์ค์ ํ์ํ ๋ ๋ค์ ์ฐพ์์ ์ฐ๋ ๊ฑธ ์ถ์ฒํ๋ค๊ณ ํ๋ค. ์ผ๋จ ์์๋๊ณ ๋์ค์ ์ฐ๋ฉด ๋ ์์ํ๊ฒ ์ธ ๊ฒ ๊ฐ์ผ๋ ์ผ๋จ ์ ๋ฐฐ์๋ณด์.
๊น๋ํ๊ฒ ์์ํ๊ธฐ ์ํด ์๋ก์ด ์์ ํด๋๋ฅผ ๋ง๋ค์ด์ ํ๊ฒฝ์ ์ธํ ํด๋ณธ๋ค.
์ผ๋จ ๋ git2๋ผ๋ ํด๋๋ฅผ ๋ง๋ค์๋ค. ์ ์์
ํด๋์์ git init๋ก ์ด๊ธฐํํ๊ณ , ํ์ผ 3๊ฐ๋ฅผ ๋ง๋ค์ด์ ๊ฐ๊ฐ ์ปค๋ฐํด๋ณด์.
a, b, c ํ์ผ์ ๋ง๋ค๋ฉด์ ๊ฐ๊ฐ commitํ๋ค๋ฉด git log --oneline์ผ๋ก ๋ก๊ทธ๋ฅผ ์ดํด๋ณด๋ฉด,

์์ ๊ฐ์ด ๋์จ๋ค. ์ด์ ์ ํ์ตํ๋ฏ์ด ์ผ์ชฝ ๋ ธ๋์ ๊ธ์๊ฐ ์ปค๋ฐ์ ๊ณ ์ ID๊ณ , ์ด ID๋ฅผ ์ด์ฉํด ํน์ commit์ ๋ช ์ํ ์ ์๋ค.
ํ์ผ ์์ ์ด ์๋ชป๋์ ๋ Ctrl + Z๋ก ๋๋๋ฆด ์๋ ์์ง๋ง, ์ปดํจํฐ๊ฐ ๊บผ์ ธ์ ๊ทธ๊ฒ ๋ถ๊ฐ๋ฅํ๊ฑฐ๋ ์์ ์ฌํญ์ด ๋ง๋ค๋ฉด restore ๋ช
๋ น์ด๋ฅผ ์ด์ฉํ ์ ์๋ค.
์๋ฅผ ๋ค์ด cํ์ผ์ ์ด๋ฐ ์์ผ๋ก ์ฝ๋๋ฅผ ๋ง๊ตฌ์ก์ด๋ก ์์ฑํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.

์ด ์ฝ๋๊ฐ ์ ์๋๋ฉด ์ต๊ทผ commit๋ ์ํ๋ก ๋๋๋ฆด ์ ์๋ค.
๋ฐ๋ก restore ๋ช
๋ น์ด๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
์ฌ๊ธฐ์ ์ ์ฅํ๊ณ ์์ผ๋ฅผ ํด๋๊ณ git restore c๋ง ์
๋ ฅํ๋ฉด

๊น๋ํ๊ฒ ์ด์ ์ํ๋ก ๋์๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
git restore ํ์ผ๋ช
: ์ต๊ทผ ์ปค๋ฐ ์ํ๋ก ํ์ผ์ ๋๋๋ฆฐ๋ค.git restore --source ์ปค๋ฐ์์ด๋ ํ์ผ๋ช
: ํน์ ์ปค๋ฐ ์์ ์ผ๋ก ํ์ผ์ ๋ณต๊ตฌํ๋ค.git restore --staged ํ์ผ๋ช
: staging ์ํ๋ฅผ ์ทจ์ํ ์ ์๋ค. (๋ณต๊ตฌ์๋ ๋ณ๊ฐ๋ค.)์ฝ๋๋ฅผ ์ด์ฌํ ์ง๋ค๊ฐ ๊ณผ๊ฑฐ ์ปค๋ฐ ํ๋๊ฐ ๋ฌธ์ ๋ฅผ ์ผ์ผ์ผฐ๋ค๋ฉด ์ด๋ป๊ฒ ํ ๊น
์๋ฅผ ๋ค์ด์ b ํ์ผ์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ค์ตํด๋ณด์.
b์ปค๋ฐ์ ์ทจ์ํ๊ธฐ ์ํด git revert ์ปค๋ฐ์์ด๋๋ฅผ ์ด์ฉํด์ ํด๋น ์ปค๋ฐ์ ์ทจ์ํ ์ ์ปค๋ฐ์ ์์ฑํ ์ ์๋ค.
๋ง ๊ทธ๋๋ก ์์ b์ปค๋ฐ์ ์ ๊ฑฐํ๋ ๊ฒ์ด ์๋๋ผ, b์ปค๋ฐ์ด ์ฌ๋ผ์ง ์๋ก์ด ์ปค๋ฐ์ ๋ง๋๋ ๊ฒ์ด๋ค.

์ฌ๊ธฐ์ bํ์ผ์ ์ง์ฐ๊ณ ์ถ์ผ๋ git revert 64dd02f๋ฅผ ์
๋ ฅํด๋ณด๊ฒ ๋ค.

์ด๋ฌ๋ฉด ์ด๋ ๊ฒ ํ์ผ์ด ๋ฌ๋ค. ํฐ๋ฐ์ดํ ์์ commit ๋ฉ์ธ์ง๋ฅผ ์
๋ ฅํ๋ฉด ๋๋ค.

์ด๋ฌ๊ณ ๋ซ๊ณ ๋ค์ ๋ก๊ทธ๋ฅผ ํ์ธํด๋ณด๋ฉด,

์ด๋ ๊ฒ bํ์ผ์ด ์ฌ๋ผ์ง(bํ์ผ์ ๋ง๋ค์๋ commit์ด ์ฌ๋ผ์ง) ์ํ์ commit์ด ํ๋ ์์ฑ๋๋ค.
์ดํ ์ปค๋ฐ์ bํ์ผ์ ์ํฅ์ ๋ฐ์ง ์๋๋ค๋ ๊ฒ์ด๋ค.

git revert HEAD: ์ต๊ทผ ์ปค๋ฐ๋ง ์ทจ์ํ ๋ ํธ๋ฆฌํจ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐ ์ง์ฅ์์ ์ด์ฌํ ์ด๋ค๊ฐ ๊ฐ์๊ธฐ 7์ด ์ด๋ฆฐ ์์ ๋ก ๋์๊ฐ๊ณ ์ถ๋ค๋ฉด,, ๊ทธ๊ฑด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
ํ์ง๋ง git์์๋ ๊ทธ๋ฐ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค.
๊ทธ๋์ ์ค์ต์ ์งํํ๋๋ฐ, ์ฌ๊ธฐ์ ๊ฐ์๊ธฐ b์ปค๋ฐ์ด ๋ง๋ค์ด์ง ์์ ์ผ๋ก ๋์๊ฐ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๊ทธ๋ ๋ค๋ฉด git reset --hard 64dd02f(b์ปค๋ฐ์์ด๋) ๋ฅผ ์
๋ ฅํ์ฌ b ์ปค๋ฐ ์์ ์ผ๋ก ๋ชจ๋ ๊ฑธ ๋๋๋ฆด ์ ์๋ค. ์ปดํจํฐ๊ฐ ๊ทธ ์ดํ์ ๊ธฐ์ต์ ๋ชจ๋ ์๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ์คํํด๋ณด๋ฉด, ์๋์ฒ๋ผ ์์
ํด๋ ํ์ผ๋ค๊น์ง๋ ๋ชจ๋ ๊ทธ๋์ ์ํ๋ก ๋ฐ๋๋ค.

git clean ๋ช
๋ น์ด๋ฅผ ์ฐพ์์ ์ฐ๋ฉด ์ง์ธ ์ ์๋ค.reset ๋ค์ hard / soft / mixed ์ค์ ์ ๋ฃ์ ์ ์๋ค.
git reset --hard b์ปค๋ฐ์์ด๋: ํ์ผ๊น์ง ๋ชจ๋ ๊ทธ ์์ ์ผ๋ก ์์ ํ ๋๋๋ฆผgit reset --soft b์ปค๋ฐ์์ด๋: bํ์ผ์ ๋ํ ์ปค๋ฐ์ ์ทจ์๋์ง๋ง, staging์๋ ๋จ์git reset --mixed b์ปค๋ฐ์์ด๋: ์ปค๋ฐ ์ทจ์, ๋ณ๊ฒฝ์ฌํญ๋ staging ํด์ . ์ด์ git add ํ๊ณ commit ํ๊ณ ๊ทธ๋ด ์ ์๋ค.๋ฐ๋ผ์ ๊ฒํ ํ์ ๋ค์ ์ปค๋ฐํ๊ณ ์ถ์ผ๋ฉด --soft๋ --mixed๋ฅผ ์ฌ์ฉํ์.
์์ ๊ฐ ์๋๋ฐ ์ค์ตํด๋ณด๋ฉด์ ๋คํ ๊ฒ ๊ฐ๋ค. ์ง์ ํด๋ณด๋ ๊ฒ ํ์คํ ์ดํด๊ฐ ์ฌ์ฐ๋ ๋ค๋ค ์ง์ ํด๋ณด๋๋ก ํ์.