일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- JavaScript
- npm
- vue.js
- leetcode
- TypeScript
- vuetify
- property
- security
- nginx
- git
- machine learning
- loop
- webpack
- Python
- C#
- docker
- 보안
- BOJ
- var
- dotenv
- bash
- generic
- condition
- Clone
- AI
- scss
- 앙상블
- type
- C++
- VUE
Archives
- Today
- Total
ice rabbit programming
[Git] reset으로 add, commit 취소하기 본문
Git에서 취소하고 싶은 경우는 생각보다 자주 있다. 이 때 사용하는 것이 reset 명령어이다.
add 취소하기
기본적으로 git에서 파일들은 unstaged 상태에 있고, git add 명령어를 통해 stage에 올린다. 이는 commit 이전에 임시로 올리는 공간이라고 생각하면 된다. add를 취소하기 위해서는 다음 명령어를 입력하면 된다.
git reset HEAD \[optional : 파일명\]
만약 파일명을 입력하지 않으면 올라갔던 파일 전체가 내려온다. (주의 : rm 명령어는 add의 반대가 아니다! git에서 이 파일을 제거한다는 의미이다.)
commit 취소하기
add로 추가한 파일들은 git commit 명령어로 commit한다. commit을 되돌리고 싶은 경우는 commit 자체가 잘못되었거나, 메시지를 수정하고 싶은 경우이다. 혹시 변경 사항을 이 commit 단위에 더 많이 적용하고 싶을 때에는 squash하는 것도 한 방법이다.
어쨌거나, 우선 메시지만 잘못 입력한 경우에는 다음 명령어로 메시지를 수정할 수 있다.
git commit --amend
다음으로 커밋을 취소하고 싶은 경우에는, 위에서 사용한 reset을 사용하면 된다.
git reset --soft HEAD^ // 커밋을 취소하고 파일은 stage에 보존
git reset --mixed HEAD^ // 커밋을 취소하고 파일은 unstage에 보존(옵션 없을 경우 디폴트 동작)
git reset --hard HAED^ // 커밋을 취소하고 파일 변경 상태도 파기
참고
가로 git reset --hard 를 사용하면 원격 저장소의 마지막 커밋 상태로 돌아간다. 즉, add했건 아니건 변경 상태가 모두 날아간다. 정말 필요없는 게 아니면 stash를 사용하는 것도 방법이다.
마지막으로 이미 push한 commit을 취소할 경우에는 강제로 push해주어야 한다.
git push -f
git push origin +master
위 명령어 두 가지는 강제로 push하는 동작을 하게 한다.
'Development > Git' 카테고리의 다른 글
[Git] Cherry Pick(체리픽)하기 (0) | 2021.03.10 |
---|---|
[Git] git 설치/업데이트 하기 (0) | 2021.01.27 |
[Git] 특정 브랜치만 clone(feat. pull) (0) | 2020.12.09 |
[Git] merge vs rebase(feat. squash) (0) | 2020.09.20 |
[Git] 오픈소스 소프트웨어에 대한 간략한 개요 (0) | 2020.09.19 |