revert
ํด๋น ๋ช ๋ น์ด๋ ์ด์ ์ปค๋ฐ์ ์ ์ปค๋ฐ์ผ๋ก ์ถ๊ฐํ๋ ๋ช ๋ น์ด๋ค.
git revert <๋๋๋ฆด ์ปค๋ฐํด์>
ํ์ฌ a.txt ํ์ผ์ "git diff test" ๋ผ๋ ๋ด์ฉ์ด ์ ๋ ฅํ๊ณ ์ปค๋ฐ์ ํ๋๋ฐ, ์ด์ ์ปค๋ฐ์ผ๋ก ๋๋๋ ค๋ณด์.
ํด๋น ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์ ๋ ฅํ๋๋ก vi ํธ์ง๊ธฐ๊ฐ ์๋์ผ๋ก ์ด๋ฆฌ๊ฒ ๋๋๋ฐ ์ฐ๋ฆฌ๊ฐ ์์ ์ปค๋ฐ์ ํ๋ฉด ๋ฐ๋์ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์ ๋ ฅํด์ผ ํ๋ค๊ณ ํ๋ค. revert๋ ์ด์ ์ปค๋ฐ์ ์ ์ปค๋ฐ์ผ๋ก ์ถ๊ฐํ๋ ๋ช ๋ น์ด๊ธฐ ๋๋ฌธ์ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์ ๋ ฅํ๋๋ก ์๋์ผ๋ก ํธ์ง๊ธฐ๊ฐ ์ด๋ฆฐ๋ค.
๊ทธ๋์ Revert "diff test" ์ปค๋ฐ์ diff test๋ฅผ ์ด์ ์ผ๋ก ๋๋๋ฆฐ ์ปค๋ฐ์ด ๋๋ค.
(์๋ ์ฌ์ง์ ๋ณด๊ณ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ์๋ฉด Revert "diff test" ์ปค๋ฐ์ first commit ๊ณผ ๊ฐ์ ๋ด์ฉ์ ์ปค๋ฐ์ด๋ค.)
reset
ํด๋น ๋ช ๋ น๋ revert์ ๋์ผํ๊ฒ ์ด์ ์ปค๋ฐ์ผ๋ก ๋๋์๊ฐ๋ ๋ช ๋ น์ด์ธ๋ฐ, revert๋ ์ด์ ์ปค๋ฐ์ ์ ์ปค๋ฐ์ผ๋ก ์ถ๊ฐํ์ง๋ง reset์ ์ด์ ์ปค๋ฐ์ผ๋ก ๋๋์๊ฐ์ง๋ง ์ดํ์ ์ด๋ ฅ์ ์ฌ๋ผ์ง๋ค๋ ์ฐจ์ด์ ์ด ์๋ค.
git reset <์ต์
> <๋์๊ฐ๊ณ ์ถ์ ์ปค๋ฐ>
๋ช ๊ฐ์ง์ ์ต์ ์ด ์๋๋ฐ soft, mixed, hard ์ธ ๊ฐ์ง์ ๋ํด ์์๋ณด์.
์ฐ์ ์ํฉ์ ์ ํ๊ณ ์ค๋ช ์ ํด์ผ ์ดํดํ๋ ๋ฐ์ ํธํ ๊ฒ ๊ฐ๋ค.
ํ์ฌ ์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด ์ด 3๊ฐ์ ์ปค๋ฐ์ด ์๊ณ , ๊ฐ ์ปค๋ฐ ์์ ์ a.txt ํ์ผ์ ์ปค๋ฐ ๋ฉ์์ง์ ๋์ผํ๊ฒ ํ ์ค ์ฉ ์ถ๊ฐ ํ๋ค.
reset ์ต์
1) soft
git reset --soft <๋๋์๊ฐ ์ปค๋ฐํด์|์ปค๋ฐ์ ๋ํ ์ฐธ์กฐ>
soft ์ต์ ์ ์คํ ์ด์ง ์ํ๋ก ๋๋์๊ฐ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ฆ "third commit"์ add ํ์ ๋๋ก ๋์๊ฐ๋ค.
์ปค๋ฐํด์๋ฅผ ์ผ์ผ์ด ์น๊ธฐ ๊ท์ฐฎ๋ค๋ฉด ์๋ ๋ช ๋ น์ด๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋๋ค. ํ์ฌ ์์นํ๊ณ ์๋ HEAD์์ ๋ช๋ฒ์งธ ์ ์ผ๋ก ๋์๊ฐ๊ฒ ๋ค๋ ๋ป์ด๋ค.
git reset --soft HEAD~1|HEAD^1 //HEAD~|^(๋์๊ฐ ํ์)
HEAD ํ์ธ์ ์๋์ ๊ฐ์ด ํ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ log๋ฅผ ํ์ธํ๋ฉด ์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด third commit์ ์์ด์ก์ ๊ฒ์ด๋ค. ์์์ ์ค๋ช ํ๋ฏ์ด reset ๋ช ๋ น์ด๋ revert์ ๋ค๋ฅด๊ฒ ์ดํ ์ปค๋ฐ์ ์ง์ด๋ค.
ํ์ง๋ง ์์ ๋๋ ํฐ๋ฆฌ์ ์๋ a.txt ํ์ผ ๋ด์ฉ์ ํ์ธํด๋ณด๋ฉด third commit ๋ด์ฉ์ ๊ทธ๋๋ก ์์ ๊ฒ์ด๋ค.
๋ง์ฝ ๋ค์ "third commit"์ ๋ง๋๋ ค๋ฉด commit๋ง ๋ค์ ํด์ฃผ๋ฉด ๋๋ค.
2) mixed
git reset --mixed(์๋ต๊ฐ๋ฅ) <๋๋์๊ฐ ์ปค๋ฐํด์|์ปค๋ฐ์ ๋ํ ์ฐธ์กฐ>
mixed ์ต์ ์ add ํ๊ธฐ ์ ์ํ๋ก ๋์๊ฐ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
reset ๋ช ๋ น์ด๊ฐ ๊ธฐ๋ณธ์ผ๋ก mixed reset์ ๋์ํ๊ธฐ ๋๋ฌธ์ --mixed ์ต์ ์ ์๋ต ๊ฐ๋ฅํ๋ค.
์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด mixed reset์ ํ๋ฉด ๋๊ฐ์ด ํด๋น ์์ ์ดํ์ ์ปค๋ฐ์ ์ง์์ง๊ณ , a.txt์ ๋ด์ฉ์ ์ด์์๋ค.
๋ง์ฝ ๋ค์ "third commit" ์ ๋ง๋๋ ค๋ฉด ์คํ ์ด์ง์ add ํ, commit ํด์ฃผ๋ฉด ๋๋ค.
3) hard
git reset --hard <๋๋์๊ฐ ์ปค๋ฐํด์|์ปค๋ฐ์ ๋ํ ์ฐธ์กฐ>
hard ์ต์ ์ ์์ ๋๋ ํฐ๋ฆฌ๊น์ง ๋์๊ฐ ์ปค๋ฐ ์์ ์ผ๋ก ๋๋์๊ฐ๋ค. ์ฆ a.txt ํ์ผ ๋ด์ฉ์ด third commit → second commit ์์ ์ผ๋ก ๋๋์๊ฐ๋ค.
์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด "third commit"์ด ์ฌ๋ผ์ง๊ณ a.txt์ ๋ด์ฉ๊น์ง ๋๋์๊ฐ ๊ฒ์ ํ์ธํ ์ ์๋ค.
'๐๏ธ git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[git] 07 - ๋ธ๋์น๋? (branch) (0) | 2023.03.27 |
---|---|
[git] 06 - ์์ ์์ ์ ์ฅํ๊ธฐ (stash) (0) | 2023.03.27 |
[git] 04 - ์ปค๋ฐ ๋น๊ต (diff) (0) | 2023.03.23 |
[git] 03 - ๋ฒ์ ๊ด๋ฆฌ (init, status, add, commit, log) (0) | 2023.03.22 |
[git] 02 - ์์ ๋๋ ํฐ๋ฆฌ, ์คํ ์ด์ง, ์ ์ฅ์ (Working Directory, Stage, Repository) (0) | 2023.03.22 |