git reset

bunny.log·2022년 9월 2일

Git

목록 보기
4/4

git reset
git reset에 줄 수 있는 옵션은 3가지가 있다. 차이점은 그림에 잘 나타나 있지만, 텍스트로도 짚고 넘어가자.

git_reset_options

--hard

git log --oneline으로 commit log를 확인한다.

$ git log --oneline

ab43d66 (HEAD -> master) docs: Update README.md
1fd1a15 docs: Update README.md
fb58071 docs: Update README.md
git reset --hard HEAD~1을 하고, 다시 commit log를 확인한다.

$ git reset --hard HEAD~1

HEAD is now at 1fd1a15 docs: Update README.md

$ git log --oneline

1fd1a15 (HEAD -> master) docs: Update README.md
fb58071 docs: Update README.md
git status로 working directory, stage의 상태를 확인한다.

$ git status

On branch master
nothing to commit, working tree clean

파일 내용이 완전히 삭제 되어 working directory, stage 어디에도 남아있지 않은 것을 확인할 수 있다.

--mixed

git log --oneline으로 commit log를 확인한다.

$ git log --oneline

1fd1a15 (HEAD -> master) docs: Update README.md
fb58071 docs: Update README.md
git reset --mixed HEAD~1을 하고, 다시 commit log를 확인한다.

$ git reset --mixed HEAD~1

Unstaged changes after reset:
M README.md

$ git log --oneline

fb58071 (HEAD -> master) docs: Update README.md
git status로 working directory, stage의 상태를 확인한다.

$ git status

On branch master
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)

    modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

파일 내용이 유지되어 working directory에 남아있는 것을 확인할 수 있다.

--soft

git log --oneline으로 commit log를 확인한다.

$ git log --oneline

2d54abb (HEAD -> master) docs: Update README.md
fb58071 docs: Update README.md
git reset --soft HEAD~1을 하고, 다시 commit log를 확인한다.

$ git reset --soft HEAD~1
$ git log --oneline

fb58071 (HEAD -> master) docs: Update README.md
git status로 working directory, stage의 상태를 확인한다.

$ git status

On branch master
Changes to be committed:
(use "git reset HEAD ..." to unstage)

    modified:   README.md

파일 내용이 유지되어 stage에 남아있는 것을 확인할 수 있다.

git reflog

이미 --hard로 파일 내용을 삭제했는데, 특정 commit으로 되돌아가야 한다면 어떻게 해야 할까?
git reflog로 모든 commit log을 확인하고, git reset에 commit hash 값을 주어 되돌리면 된다!

git reflog로 모든 commit log를 확인한다.

$ git reflog

0bc79e7 (HEAD -> master) HEAD@{0}: reset: moving to HEAD~1
8d9ea8f HEAD@{1}: commit: docs: Update README.md
0bc79e7 (HEAD -> master) HEAD@{2}: commit: docs: Update README.md
:...skipping...

git reset --hard <특정 commit hash 값>을 하고, 다시 commit log를 확인한다.

$ git reset --hard 8d9ea8f

HEAD is now at 8d9ea8f docs: Update README.md

$ git log --oneline

8d9ea8f (HEAD -> master) docs: Update README.md
0bc79e7 docs: Update README.md
fb58071 docs: Update README.md
특정 commit으로 git reset이 되돌려진, 즉 commit이 복구된 모습을 확인할 수 있다.

참고 https://da-nyee.github.io/posts/git-git-reset-git-reflog/

profile
더 많은 유익한 내용은 ->> https://github.com/nam-yeun-hwa

0개의 댓글