일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- C# delegate
- Unity
- 다트 언어
- c# winform
- 도커
- c# 추상 클래스
- c#
- 깃
- 플러터
- Data Structure
- dart 언어
- C++
- git
- jupyter lab
- docker
- 구조체
- github
- c언어
- Houdini
- vim
- c# 윈폼
- C언어 포인터
- Flutter
- 유니티
- gitlab
- Python
- 포인터
- HTML
- jupyter
- Algorithm
Archives
- Today
- Total
nomad-programmer
[VCS/Git] git reset: 이전 작업 결과를 저장한 상태로 되돌리기 본문
git reset 명령은 어떤 특정 커밋을 사용하지 않게 되어 다시 되돌릴 때 사용한다.
git revert 명령이 이전 커밋을 남겨두는 명령이었다면 git reset 명령은 이전 커밋을 남기지 않고 새로운 커밋을 남긴다는 차이가 있다.
또한 git reset 명령은 현재 커밋인 HEAD의 위치, 인덱스, 작업하는 저장소 디렉토리 등도 함께 되돌릴지를 선택하기 위한 모드를 지정할 수 있다.
git rest 명령의 모드
모드 | 의미 | HEAD 위치 | 인덱스 | 저장소 디렉토리 |
hard | 완전히 되돌림 | 변경 | 변경 | 변경 |
mixed (기본값) | 인덱스의 상태를 되돌림. 모드를 지정하지 않았을 때의 기본값 |
변경 | 변경 | 변경 안 함 |
soft | 커밋만 되돌림 | 변경 | 변경 안 함 | 변경 안 함 |
* 인덱스(Index) 는 실제 커밋 전 변경 내역을 담는 준비 영역이다. git add 명령을 실행했을 때 이 영역으로 이동한다.
* 저장소 디렉토리는 실제 파일이 담겨있는 작업 영역을 의미한다.
커밋을 취소하는 데 필요한 옵션 ( git reset 명령의 옵션 )
옵션 | 설명 |
^ 혹은 ~ | ~ 은 커밋 내역 하나를 의미한다. 표시한 수 만큼 커밋을 되돌린다. 하나면 최종 커밋 내역일 것이고 두 개면 최종 커밋 내역과 바로 전 커밋 내역이 된다. |
ORIG_HEAD | git rest 명령을 실행했을 때 지운 커밋 내역을 보관한다. 해당 명령을 통해 git reset 명령으로 지운 커밋을 되돌릴 수 있다. |
예) 최근 커밋의 세 번째 커밋까지, 그리고 커밋만 되돌리기
// 최근 다섯 개의 커밋 내역을 확인
git log -5
// 커밋만 되돌리기 위해 soft 모드 사용
git reset --soft HEAD~~~
git log -3 명령을 실행해보면 가장 최근 커밋이 바뀐 것을 확인할 수 있다.
예) 원래 상태대로 되돌리기
git reset --soft ORIG_HEAD
git log -5 명령을 실행해보면 원 상태로 돌아온 것을 확인할 수 있다.
// 파일의 내용까지 변경
git reset --hard HEAD~~~
// 되돌리기
git reset --hard ORIG_HEAD
'VCS > Git' 카테고리의 다른 글
[VCS/Git] git rebase: 브랜치 이력을 확인하면서 병합하기 (0) | 2019.12.03 |
---|---|
[VCS/Git] git checkout HEAD -- filename: 특정 파일을 최종 커밋 시점으로 되돌리기 (0) | 2019.12.03 |
[VCS/Git] git revert: 공개된 커밋의 변경 내역 되돌리기 (0) | 2019.12.03 |
[VCS/Git] git commit --amend: 마지막 커밋 수정하기 (0) | 2019.12.03 |
[VCS/Git] git tag: 특정 커밋을 참조하는 이름 붙이기 (0) | 2019.12.03 |
Comments