지금까지 저희는 버전을 생성하는 방법에 대해 알아봤습니다. 생성된 버전이 잘못되었을 때 이전 버전으로 돌아가려면 어떻게 해야 할지 알아보겠습니다. 이전 버전으로 돌아가는 명령어는 git reset과 git revert가 있습니다. 그중에서 이번에는 git reset에 대해 알아보겠습니다.

 

1. git reset


 첫 번째로 배울 명령어는 git reset입니다. git reset <커밋 해시> 는 "해당 커밋으로 돌아가겠다" 라는 의미입니다. 단, 추후에도 말씀 드리지만 reset을 하게되면 돌아가려는 커밋 이후로 생성되었던 버전들은 사라지게 되므로 주의하셔야 됩니다. 

사용 방법은 git reset <커밋 해시>입니다. <커밋 해시> 부분에 돌아가려는 커밋 정보를 적어주시면 되는데요. 아래 예시를 참조하시면 좀 더 이해가 쉬울 거예요. 

 

1) 먼저 원하는 커밋 정보를 찾기 위해 git log --oneline --graph 명령어를 사용하였습니다.

2) git reset 70aa89f 명령어를 사용하여 원하는 버전으로 되돌리기

3) log 정보를 한번 더 사용해보면 head는 70aa89f 커밋으로 이동되어있고, 그 이후에 작성되었던 버전들은 없어져있는 것을 볼 수 있습니다. 

여기서 중요한 사실은 이동한 버전 이후에 생성된 버전은 모두 없어졌다는 점과 커밋은 돌아갔으나, Working Tree의 파일 내용은 변경이 되지 않았다는 것입니다.  cat명령어를 사용하여 A.txt 파일 내용을 살펴보면 파일의 내용은 그대로임을 알 수 있습니다.  

 우리는 git reset <커밋 해시>는 default로 원하는 커밋 해시로 돌아가나, 파일의 내용까지 변경하지 않는다는 것을 알 수 있는데요. 파일의 내용을 해당 커밋의 내용으로 변경하는 방법에는 두 가지가 있습니다. 첫 번째는 git reset에 옵션을 추가하는 방법 : git reset --hard <커밋 해시> 두 번째는 git restore <file name>을 통해 수정 사항을 삭제하는 방법입니다. 

 

 첫 번째 방법 git reset --hard <커밋 해시> 예시를 보여드리겠습니다. 

git reset --hard <커밋 해시>를 사용하면 아래 보시는 바와 같이 A.txt의 내용이 변경된 것을 볼 수 있습니다. --hard 옵션을 넣게 되면 해당 커밋으로 변경되며 파일 수정사항 또한 해당 커밋으로 변경되게 됩니다. 

 

추가로, git reset 옵션에 대해 적어놓으니 reset사용 시 참고하시면 좋을 것 같습니다. 

명령어 내용
git reset –soft <커밋해시> 원하는 버전으로 돌아가나, 파일 내용은 변함이 없음. commit하기 전상태로 변경됨
git reset –mixed <커밋해시> 원하는 버전으로 돌아가나, 파일내용은 변함이 없음. add하기 전 상태
git reset –hard <커밋해시> 원하는 버전으로 완전 돌아감

 

 

 두 번째 방법인 git restore <file name>은 현재 커밋과 Working Tree의 파일 간 변경사항이 있을 때, file의 변경 사항을 커밋에 저장되어있는 파일 내용으로 되돌려 주는 명령어입니다.

 

아래 예시와 같이 현재 커밋에 수정된 파일 A.txt 있을 때 git restore <file name>을 사용해주면 A.txt의 "add context"라는 내용이 현재 커밋에 저장된 A.txt의 내용으로 변경됩니다.(현재 커밋에서 A.txt 파일에는 아무 내용이 없으므로 안 읽힘)

 

 

 

*Reference

- "지옥에서 온 문서 관리자 깃&깃허브 입문" 이지스버블리싱 - 이고요, 고경희 지음

-

-

 

부족한 글이지만 읽어주셔서 감사합니다. 

 

+ Recent posts