#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는 모두 지워졌다.
* 개인적으로 공부한 내용을 기록한 것이기에, 잘못된 내용이 있을 수도 있습니다.
'ETC > Git&GitHub' 카테고리의 다른 글
[Git&GitHub] 깃/깃허브 공부기록 #4 unmodified,modified,staged 상태 (0) | 2021.01.13 |
---|---|
[Git&GitHub] 깃/깃허브 공부기록 #3 tracked 파일과 untracked 파일 (0) | 2021.01.12 |
[Git&GitHub] 깃/깃허브 공부기록 #2 커밋 기록 확인하기 git log / git diff (0) | 2021.01.12 |
[Git&GitHub] 깃/깃허브 공부기록 #1 깃 저장소 만들기 및 버전(Version) 관리하기 (0) | 2021.01.07 |
[Git&GitHub] 깃/깃허브 공부기록 #0.1 필수 리눅스 명령어 (pwd,ls,cd,mkdir,rm,vim,cat) (0) | 2021.01.02 |
댓글