일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 이더리움
- 프론트엔드
- kubernetes
- 클라우드
- 백준
- JavaScript
- docker
- VUE
- BFS
- 웹
- TypeScript
- HTML
- CSS
- next.js
- es6
- 리액트
- k8s
- 파이썬
- 자바스크립트
- 솔리디티
- AWS
- 백엔드
- 블록체인
- 쿠버네티스
- 컴퓨터공학
- 이슈
- react
- 가상화
- 알고리즘
- 타입스크립트
- Today
- Total
즐겁게, 코드
git reset으로 스테이징과 커밋 되돌리기 본문
오늘 아침에는 프로젝트에 기능을 하나 추가하다가 커밋 메시지를 잘못 남긴 일이 있었습니다.
인터렉티브 리베이스를 하긴 뭔가 귀찮아서 git reset --hard HEAD^
커맨드를 사용했는데요, 아뿔싸!
커밋과 스테이징은 물론 코드 수정사항까지 모두 이전 버전으로 되돌아가 코드를 다시 작성해야 했던 일이 있었습니다.
이런 일이 또 반복되지 않도록 git reset
커맨드의 내용을 정리해보려 합니다.
스테이징 취소하기
git add <파일명>
커맨드로 파일을 스테이징 영역에 올릴 수 있다는 것을 알고 계실 텐데요, 저는 파일명을 명시하는게 번거로워 git add .
로 변경사항을 한꺼번에 스테이징하곤 합니다.
다만 이러다 보니 원치 않는 파일까지 한번에 스테이징된다는 문제가 종종 생겨, 스테이징을 취소할 방법이 필요합니다.
이럴 때는 git reset <언스테이징할 파일명>
으로 특정 파일의 스테이징을 취소하거나, git reset
커맨드로 모든 파일의 스테이징을 취소할 수 있습니다.
커밋 취소하기
이번에는 커밋을 취소해보도록 할텐데요, 마침 누가 잘못된 커밋을 남긴 모습입니다.
a9350f6 "BAD commit"
이라는 이름의 커밋을 취소하려면 먼저 git log
를 통해 커밋 로그를 확인합니다.
이후 a64b9f "feat: 파일 추가"
라는 커밋 이후의 커밋을 취소해야 하니, git reset --soft a64b9f
를 입력해줍니다.
그리고 git log
로 다시 커밋 로그를 확인해보면, 변경사항은 유지된 상태로 커밋만 취소된 것을 확인할 수 있습니다.
커밋을 취소할 때는 세 가지 옵션이 있습니다.
- 변경사항 스테이징은 유지하고, 커밋만 취소할 때 :
git reset --soft <커밋 포인터 또는 커밋 해시값>
- 변경사항 스테이징과 커밋 모두 취소할 때 :
git reset --mixed <커밋 포인터 또는 커밋 해시값>
Tip. 플래그 없이git reset
을 사용하면git reset --mixed
옵션이 기본으로 적용됩니다!
- 변경사항 스테이징과 커밋 모두 취소하고, 코드 변경사항까지 폐기할 때 :
git reset --hard <커밋 포인터 또는 커밋 해시값>
맨 위에서 제가 실수한 것도 바로 git reset --hard
를 사용해 커밋과 모든 코드 변경사항을 날려버려 생긴 문제였는데요, 다음 글에서는 날려버린 커밋을 git reflog
로 우아하게 복구하는 방법을 소개하도록 하겠습니다.
'😾 Git & Github' 카테고리의 다른 글
당신이 찾던 커밋 수정법, git commit --amend 사용하기 (0) | 2021.08.30 |
---|---|
한밤의 리베이스 실패기 (2) | 2021.05.25 |
깃허브 프로젝트에 라이센스 부여하기 (0) | 2021.05.04 |
github api 요청 한도 늘리기 (0) | 2021.02.26 |
좋은 커밋 메시지란 & 커밋 템플릿 만들기 (1) | 2021.02.22 |