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}