* git revert
git에서 commit 후 commit에 포함시키지 말아야 할 파일을 발견했을때,
즉 커밋한 내용에 실수가 있어서, 수정을 하고 싶을때 commit을 삭제하기 위해 revert를 쓰는 대참사의 경우가 있다.
하지만 이는 매우매우 위험한 행동이다... revert는 절대 함부로 쓰면 안된다
git revert HEAD
git revert <commit id>는 해당 commit id로 파일을 되돌리는 명령어이기 때문에, 그 이후의 수정사항들이 모두 사라져버린다.
즉, commit을 한 뒤 revert를 사용하면 commit 이전의 상태로 되돌아간다.
나는 commit의 일부 내용을 없애거나 수정하고 싶었던 것인데, 로컬에서 내가 작업하고 수정한 모든 코드와 수정본들, 즉 commit한 파일들도 로컬에서 다 사라져버리는 이전 상태로 되돌린다.
git log
log 명령어를 실행하면 이력과 commit 정보 등을 확인할 수 있다.
ex)
$ git log
commit 0d4a808c26908cd5fe4b6294a00150342d1a58be
Author: yourname <yourname@yourmail.com>
Date: Mon Jul 16 23:19:26 2012 +0900
pull의 설명을 추가
commit 9a54fd4dd22dbe22dd966581bc78e83f16cee1d7
Author: yourname <yourname@yourmail.com>
Date: Mon Jul 16 23:19:01 2012 +0900
commit의 설명 추가
commit 326fc9f70d022afdd31b0072dbbae003783d77ed
Author: yourname <yourname@yourmail.com>
Date: Mon Jul 16 23:17:56 2012 +0900
add의 설명을 추가
commit 48eec1ddf73a7fb508ef664efd6b3d873631742f
Author: yourname <yourname@yourmail.com>
Date: Mon Jul 16 23:16:14 2012 +0900
first commit
* revert한 상황 되돌리기
revert한 상황을 되돌리는 방법은 git reflog에 있다.
# git reflog
3d0a896 HEAD@{0}: commit (amend): 모든 걸 삭제한 악마의 커밋
e829698 HEAD@{1}: commit: 되돌리고 싶은 커밋
[...]
따라서 아래의 코드를 실행시켜 주면 revert한 이전의 상태로 되돌아가, 커밋까지 완료한 상태가 된다.
git reset --hard HEAD@{1}
[revert 실행 후 -> reset으로 revert 이전 상태로 되돌리기 -> 복구된 상태의 전체 과정]
# git reflog
3d0a896 HEAD@{0}: commit (amend): 모든 걸 삭제한 악마의 커밋
e829698 HEAD@{1}: commit: 되돌리고 싶은 커밋
[...]
# git reset --hard HEAD@{1}
# git reflog
e829698 HEAD@{0}: reset: moving to HEAD@{1} : 복구하는 커밋
3d0a896 HEAD@{1}: commit (amend): 모든 걸 삭제한 악마의 커밋
e829698 HEAD@{2}: commit: 되돌리고 싶은 커밋
[...]
수정사항에는 문제가 없지만 commit만 되돌리고 싶다면 git reset을 사용해야 한다.
# git reset --soft <돌아가고 싶은 commit id>
git add는 되어 있는 상태로 돌아간다.
# git reset --mixed <돌아가고 싶은 commit id>
git add 이전으로 돌아간다.
'Coding > git' 카테고리의 다른 글
git 편집 에디터 바꾸기 (nano to vim) (0) | 2020.10.01 |
---|---|
git branch 이용, 생성, 삭제 (0) | 2020.05.14 |
git - commit, add, pull, merge 취소 (0) | 2020.01.03 |
git pull requests 사용법 (1) | 2019.12.23 |
git, github(버전 관리 프로그램, 원격 저장소) 사용하기 (0) | 2019.11.01 |