git commit을 취소해보자
1. git log을 통해 commit log를 확인
commit 2ec7ad069877542d58ed75ee6b99974b0b28b35e (HEAD -> project_test)
Author: mssong <mssong@sunjesoft.com>
Date: Thu Sep 29 15:57:55 2022 +0900
test
commit 2ec7ad069877542d58ed75ee6b99974b0b28b35e (HEAD -> project_session_handle)
Author: mssong <mssong@sunjesoft.com>
Date: Thu Sep 29 15:57:55 2022 +0900
test
commit ce0e029a9bff15d90133c4ea951e997955b14df7 (origin/project_test)
......
2. commit을 취소하고자 하는 방법
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
git reset --soft < commit >
- commit을 취소하고 해당 파일들을 stated 상태로 워킹 디렉토리에 보존
$ git reset --soft HEAD^
$ git status -uno
현재 브랜치 project_test
브랜치가 'origin/project_test'보다 1개 커밋만큼 앞에 있습니다.
(로컬에 있는 커밋을 제출하려면 "git push"를 사용하십시오)
커밋할 변경 사항:
(스테이지에서 제외하려면 "git restore --staged <file>..."을 사용하시오)
새 파일: test
새 파일: test1
추적하지 않는 파일을 보지 않습니다 (추적하지 않는 파일을 보려면 -u 옵션을 사용하십시오)
git reset --mixed < commit >
- commit을 취소하고 해당 파일들을 unstaged 상태로 워킹 디렉토리에 보존
$ git reset --mixed HEAD^
$ git status -uno
현재 브랜치 project_test
브랜치가 'origin/project_test'보다 1개 커밋만큼 앞에 있습니다.
(로컬에 있는 커밋을 제출하려면 "git push"를 사용하십시오)
커밋할 사항 없음 (추적하지 않는 파일을 보려면 -u 옵션을 사용하십시오)
$ ls test test1
test test1
git reset < commit >
- git reset --mixed와 동일하게 commit을 취소하고 해당 파일들을 unstaged 상태로 워킹 디렉토리에 보존
$ git reset HEAD^
$ git status -uno
현재 브랜치 project_test
브랜치가 'origin/project_test'보다 1개 커밋만큼 앞에 있습니다.
(로컬에 있는 커밋을 제출하려면 "git push"를 사용하십시오)
커밋할 사항 없음 (추적하지 않는 파일을 보려면 -u 옵션을 사용하십시오)
$ ls test test1
test test1
git reset --hard < commit >
- commit을 취소하고 해당 파일들을 unstaged 상태로 워킹 디렉토리에서 삭제
$ git reset --hard HEAD^
HEAD의 현재 위치는 835eb403a7입니다 test0
$ ls test test1
ls: 'test'에 접근할 수 없습니다: 그런 파일이나 디렉터리가 없습니다
ls: 'test1'에 접근할 수 없습니다: 그런 파일이나 디렉터리가 없습니다