Table of Contents
깃을 이용하여 개발할 때, 이전 커밋으로 돌아가야 하는 경우가 있습니다. 그런 경우 git reset
으로 돌아 갈 수 있습니다. 이 리셋 명령어에 다양한 옵션을 줄 수 있습니다.
깃 리셋 hard 옵션
이 글에서는 제가 주관적으로 자주쓰는 명령어 옵션인 hard
옵션에 대해서 설명하도록 하겠습니다.
기본적으로 reset 명령어는 이전 커밋으로 돌아가기 위한 명령어입니다. 순차적으로 리셋에 관한 예제를 한번 만들어 보겠습니다.
git reset 예제
- 텍스트 파일 생성하기
echo "테스트 문장." > test.txt
- Stage 및 commit 하기
git add .
> git commit -m "reset test commit"
이제 다음 명령어로 깃 로그를 찍어 보겠습니다.
git log
commit 83d2c582abd55671b3a4d2d63ffb60c09ab8c726 (HEAD -> master)
Author: test <test@github.com>
Date: Sun Feb 23 10:42:55 2020 +0900
reset test commit
첫 번째 커밋이 생겼습니다.
- 텍스트 파일 내용 변경하기.
echo "second line" >> test.txt
텍스트 파일안에 두 번째 줄을 추가합니다.
- 다시 또 Stage 및 Commit을 합니다.
git add .
> git commit -m "reset second test commit"
- 깃 로그 확인하기
git log
// 두번째 커밋
commit aed5befb787a9ccf65547336d4eb73099623c3ea (HEAD -> master)
Author: test <test@github.com>
Date: Sun Feb 23 10:47:34 2020 +0900
reset second test commit
// 첫번째 커밋
commit 83d2c582abd55671b3a4d2d63ffb60c09ab8c726
Author: test <test@github.com>
Date: Sun Feb 23 10:42:55 2020 +0900
reset test commit
- 이전 커밋으로 리셋하기
git reset HEAD~
다시 로그를 보겠습니다.
git log
commit 83d2c582abd55671b3a4d2d63ffb60c09ab8c726
Author: test <test@github.com>
Date: Sun Feb 23 10:42:55 2020 +0900
이전 커밋으로 돌아오는 것에 성공했습니다. 그리고 git status
명령어를 통해 상태를 보도록 하겠습니다.
git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
UnStaged 상태로 돌아왔습니다. 즉, 두 번째 커밋을 하기 전 변경 사항이 남아있다는 이야기 입니다.
테스트 문장. <-- 첫 번째 커밋
second line <-- 두 번째 커밋 하기 전의 변경사항
hard 옵션
방금 전, reset 명령어에서 두 번째 커밋 하기 전의 변경사항도 없게 reset을 하고 싶은 경우가 있습니다. 그런 경우, 이 hard 옵션을 주시면 됩니다.
# 두 번째 커밋까지 완료된 상태에서
git reset --hard HEAD~
이런 식으로 리셋을 하게 되면, 변경 사항도 없게 reset을 할 수 있습니다.
맺음
간단하게 git의 reset 명령어와 그 옵션들에 대해서 알아보았습니다. 혹시 궁금하신 점이나 이상한 점이 있으시다면 댓글 부탁드리겠습니다.
감사합니다.
Comments
Copied to clipboard