본문 바로가기
Git

문제가 생겨 원래코드로 돌아가고 싶을때(git revert, reset, restore)

by Hyeon_E 2023. 1. 28.

git은 버전관리 프로그램이기 때문에 이전 commit으로 되돌아가거나 문제가 되는 commit 내역을 취소할 수 있음

 

파일을 되돌릴 경우

git restore 파일명

최근 commit 된 상태로 현재 파일의 수정내역을 되돌릴 수 있음

 

git restore --source 커밋아이디 파일명

이때 commit id는 git log --oneline을 이용하면 commit 내역을 log를 보여주는데

줄 앞에 노란 문자들이 commit 고유 id

 

git restore --staged 파일명

특정 파일 staging 취소

 

commit 취소

git revert 커밋아이디

커밋아이디에서 일어난 일만 취소

 

※ revert 명령시 Vim 에디터가 뜨는 경우 커밋메세지를 수정하라고 말해주는 것

i눌러서 글자를 수정하고, :wq를 누르면 커밋 메세지가 저장됨

esc를 눌러서 나올 수 있음. 

 

revert를 한 후 log를 확인하면 revert해줬다는 commit이 자동으로 생성되고 revert로 한 커밋아이디의 내용은 없어짐

  • revert 할 때 동시에 여러개의 commit id 입력가능
  • 최근 했던 commit 1개만 revert하고 싶으면 git revert HEAD 하면 편리
  • merge 명령으로 인해 새로 만들어진 commit도 revert 가능

 

시간을 되돌릴땐 git reset

git reset --hard 커밋아이디

커밋이 생성될 때로 시간을 되돌려줌. 작업폴더 내의 파일도 그 시절로 돌아감

예를 들어 commit1,2,3이 있고 reset으로 commit2를 하면

commit2로 돌아가고 log자체에도 commit2 이후 log가 다 사라짐

 

  • 여러명이서 협업하는 리포지토리에는 보통 reset 쓰면 안됨. 갑자기 소스코드가 사라지기 때문
  • untracked 파일들은 (git add 안해놓은 파일들은) 사라지지않고 유지됨
  • git clean 명령어 찾아서 쓰면 untracked 파일들도 다 지울 수 있음

reset 옵션 설정

git reset --soft 커밋아이디

변경사항을 다 삭제하지 않고 이후에 변경사항들은 staging area에 남아있음

변경사항을 commit할 수 있음

 

git reset --mixed 커밋아이디

변경사항이 staging되지 않은 상태가 됨

git add하고 commit할 수 있음

 

reset하면서 파일을 지워버리는 것보다는 검토하고 다시 commit하고 싶다면 --soft / --mixed 사용

git reset을 하면 --mixed 옵션이 자동으로 발동

'Git' 카테고리의 다른 글

GitHub 브랜치로 협업  (0) 2023.01.29
GitHub 타인과 협업  (0) 2023.01.29
GitHub 사용법  (0) 2023.01.28
Git에서 branch 만들기  (0) 2023.01.27
Git 설치와 add, commit, diff  (0) 2023.01.27

댓글