hsunny study blog

commit 되돌리기 본문

programming/GIT

commit 되돌리기

헤써니 2019. 11. 24. 23:57

테스트파일 생성

GIT 폴더 하위에 git-reset-test.md 파일을 생성해주었습니다.

➜  study git:(master) git status
On branch master
Your branch is up to date with 'origin/master'.
 
Untracked files:
  (use "git add <file>..." to include in what will be committed)
 
        GIT/git-reset-test.md
 
nothing added to commit but untracked files present (use "git add" to track)
➜  study git:(master) ✗ git add GIT/git-reset-test.md 
➜  study git:(master) ✗ git status
On branch master
Your branch is up to date with 'origin/master'.
 
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
        new file:   GIT/git-reset-test.md
 
➜  study git:(master) ✗ git commit -"git-reset-test"
[master 4342215] git-reset-test
 1 file changed, 1 insertion(+)
 create mode 100644 GIT/git-reset-test.md
➜  study git:(master) git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
 
nothing to commit, working tree clean
➜  study git:(master) git log -1
 

HEAD 의 위치

* 4342215 -  (HEAD -> master) git-reset-test (7 minutes ago) <ssunny>
* 3b96a77 -  (origin/master, origin/HEAD) Update README.md (8 days ago) <sunny>

 

테스트를 위한 파일 생성을 마쳤습니다.

reset 명령어를 이용해 되돌려보겠습니다.

 

git reset --soft HEAD^ 로 커밋 리셋하기

➜  study git:(master) git reset --soft HEAD^
➜  study git:(master) ✗ git status
On branch master
Your branch is up to date with 'origin/master'.
 
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
        new file:   GIT/git-reset-test.md
git-reset-test.md 가 staged 상태로 변화합니다.

 

HEAD의 위치

* 3b96a77 -  (HEAD -> master, origin/master, origin/HEAD) Update README.md (8 days ago) <sunny>
HEAD가 가르키는 위치는 이전 커밋으로 변경되었습니다.
4342215 커밋 사라짐

다시 커밋해보면

➜  study git:(master) ✗ git commit -"reset soft HEAD^"
[master ce65127] reset soft HEAD^
 1 file changed, 1 insertion(+)
 create mode 100644 GIT/git-reset-test.md

HEAD의 위치

* ce65127 -  (HEAD -> master) reset soft HEAD^ (64 seconds ago) <ssunny>
* 3b96a77 -  (origin/master, origin/HEAD) Update README.md (8 days ago) <sunny>
ce65127 값으로 새로운 commit이 생성되었고, 새로운 commit이 HEAD가 되었습니다.

git reset HEAD^ 로 커밋 리셋하기

➜  study git:(master) git reset HEAD^
➜  study git:(master) ✗ git status
On branch master
Your branch is up to date with 'origin/master'.
 
Untracked files:
  (use "git add <file>..." to include in what will be committed)
 
        GIT/git-reset-test.md
 
nothing added to commit but untracked files present (use "git add" to track)
git-reset-test.md 가 unstaged 상태로 변화합니다.

다시 커밋해보면

➜  study git:(master) ✗ git add GIT/git-reset-test.md
➜  study git:(master) ✗ git commit -"reset HEAD^"
[master e806dea] reset HEAD^
 1 file changed, 1 insertion(+)
 create mode 100644 GIT/git-reset-test.md

HEAD의 위치

* e806dea -  (HEAD -> master) reset HEAD^ (70 seconds ago) <ssunny>
* 3b96a77 -  (origin/master, origin/HEAD) Update README.md (8 days ago) <sunny>
e806dea 값으로 새로운 commit이 생성되었고, 새로운 commit이 HEAD가 되었습니다.

 

 

git reset --hard HEAD^ 로 커밋 리셋하기

➜  study git:(master) git reset --hard HEAD^
HEAD is now at 3b96a77 Update README.md
➜  study git:(master) git status
On branch master
Your branch is up to date with 'origin/master'.
 
nothing to commit, working tree clean
git-reset-test.md만든 것조차 사라집니다.
> git-reset-test.md(deleted)

깨끗하게 이전단계(3b96a77) 커밋 그대로로 돌아가버립니다.

'programming > GIT' 카테고리의 다른 글

원격브랜치 가져오기  (0) 2020.12.29
git stash 사용하기  (0) 2020.12.28
원격(remote)저장소 확인하기  (0) 2019.11.12
웹서비스 배포를 위한 서버 git 설정  (0) 2019.03.22