본문 바로가기
ETC/Git&GitHub

[Git&GitHub] 깃/깃허브 공부기록 #5 작업내용 되돌리기(git checkout/reset)

by yoiii 2021. 1. 15.

#5 작업내용 되돌리기 git checkout/reset


■ STUDY

지금까지 수정한 파일을 스테이지에 옮기는 방법과, 커밋하는 방법에 대해서 공부했다.

이번 포스팅에서는, 스테이지에 올린 파일을 내리거나, 커밋을 취소하는 등 각 단계로 되돌리는 방법에 대해 알아보고자 한다.


#1 수정한 파일 되돌리기 - git checkout -- 파일이름

#2 스테이징 되돌리기 - git reset HEAD 파일이름

#3 커밋 되돌리기

3.1 최신 커밋 되돌리기 git reset HEAD^

3.2 특정 커밋으로 되돌리기 git reset 커밋 해시


#1 수정한 파일 되돌리기 - git checkout -- 파일이름

 

작업트리에 올라와있는 수정한 파일을 되돌리는 방법에 대해 알아보자.

 

 

hello.txt 파일의 내용을 수정하고 상태를 확인해 보면,

 

vim hello.txt // hello.txt 내용 수정
git status // 상태확인

 

파일이 modified 상태로 변해있다.

여기서 'git checkout -- 파일이름' 명령을 사용하고, 다시 파일의 상태를 확인하면,

 

git checkout -- hello.txt // 수정한 파일 되돌리기

 

작업트리도 비워져있고, hello.txt의 내용도 수정되기 전으로 돌아간다.

이처럼, 'git checkout -- 파일이름' 명령어를 사용하면, 작업트리에 올라와있는, 수정한 파일을 이전 상태로 되돌릴 수 있다.


#2 스테이징 되돌리기 - git reset HEAD 파일이름

 

다음으로 스테이징한 (스테이지에 올라와있는), 파일을 취소하는 방법에 대해서 알아보자.

 

 

 

hello.txt 파일을 vim 으로 수정 후, 스테이징까지 끝마친 후 상태를 확인하면,

 

vim hello.txt // hello.txt 내용 수정
git add hello.txt // 수정된 hello.txt 스테이징
git status // 상태확인

 

수정된 파일이 스테이지에 올라가있다.

여기서, 'git reset HEAD 파일이름' 명령어를 사용해보면

 

git reset HEAD hello.txt // 스테이징한 파일 되돌리기

 

'Unstaged changes after reset :' 스테이지에서 내려졌다는 메시지가 뜬다.

 

 

상태를 확인해보면, hello.txt 파일이 작업트리로 내려졌다.

'git reset HEAD 파일이름' 명령어를 사용하면, 스테이징된 파일을 작업트리로 되돌릴 수 있다.


#3 커밋 되돌리기

■ 3.1 최신 커밋 되돌리기 git reset HEAD^

 

시작하기에 앞서, hello.txt의 수정파일 3개 (VER0.1 VER0.2 VER0.3)을 준비했다.

첫번째로 알아볼 커밋 명령어는 git reset HEAD^ 이다.

git reset HEAD^ 명령어를 사용하면, 가장 마지막에 한 커밋(VER0.3)을 취소해준다.

 

git reset HEAD^

 

이 방법으로 커밋을 취소하면, 커밋 전에 했던 스테이징도 함께 취소된다.

 

git log

 

가장 최신 커밋인 VER0.3이 말끔하게 지워졌다.

 

■ 3.2 특정 커밋으로 되돌리기 git reset 커밋 해시

 

hello.txt 의 수정파일 4개 (VER0.1,VER0.2,VER0.3,VER0.4)를 준비했다.

현재 상태는 VER0.4가 최신 버전이다. 이번에는 reset 명령어를 이용해, VER0.2 커밋으로 이동한 뒤 , VER0.3 VER0.4를 모두 삭제하여, VER0.2를 최신 버전으로 바꿀 것이다.

특정 커밋으로 되돌리기 위해선, 되돌리고자 하는 커밋의 '커밋해시'가 필요하다.

 

 

commit 오른쪽에 있는 노란색 글씨가, 커밋해시이다. 이것을 복사해두자.

 

git reset --hard 복사해둔 커밋 해시

 

이제, git reset --hard 뒤에 복사한 커밋 해시를 넣어서 명령어를 실행하면,

 

 

HEAD 가 복사한 VER0.2로 옮겨졌다고 나타난다.

git log로 커밋된 파일들을 확인해보면,

 

 

VER0.2가 최신 커밋이 되었고, VER0.2의 앞의 VER0.3과 VER0.4는 모두 지워졌다.


* 개인적으로 공부한 내용을 기록한 것이기에, 잘못된 내용이 있을 수도 있습니다.

댓글