티스토리 뷰
git은 기능이 많아서 그런지 다들 너무 어려워 합니다.
하지만 하나도 어렵지 않지만 알고 있는 자만 어렵지 않습니다.
그래서 오늘은 하나 더 알고 있는것을 남기기 위해서 글을 적어봅니다.
일단 우리가 하고 싶은 동작을 하는 명령어는 reset입니다.
reset명령은 옵션이 세가지가 존재하고요.
soft, mixed, hard
soft : 현재 인덱스, 워킹 트리를 유지한 채로 HEAD를 변경
mixed : default 옵션. 인덱스는 취소한채로 워킹트리만 그대로
hard : 인덱스와 워킹트리 변화를 모두 제거하고 HEAD를 변경
1. 작업의 취소
git reset --soft HEAD^
--soft 옵션을 사용하였으므로, 수정한 내역은 그대로 두고 head는 한단계 위로 조정을 한다는 의미입니다. commit을 취소하는 것이죠
--hard 옵션을 사용하게 되면 지금까지 작업하던것들이 다 날아가므로, 조심합시다
2. commit의 취소
git reset --hard @^
hard를 이용하여 HEAD로 돌리는 명령어 입니다.
@는 1.8.4부터 도입된 HEAD의 동의어라고 합니다. 같은걸로는 @^, @~1, @~ 가 동일합니다.
3. pull, merge 취소
git reset --hard ORIG_HEAD
git reset --merge ORIG_HEAD
ORIG_HEAD라고 하는것은 이전에 작업한 곳의 HEAD입니다.
즉. pull 이나 merge를 하는 경우에 ORIG_HEAD를 남기게 되는데, pull을 잘못 받거나 merge를 잘못하게 되면 이것을 이용합니다.
4. add의 취소
git reset HEAD
즉 default인 mixed를 이용하여 HEAD로 돌아가게 하는 방법입니다.
위에 넣은것처럼 @^도 동일합니다. @~1도 되겠죠.
많은 양은 아니지만 조금씩 사용하면 좋은 부분들도 있으니 잘 작업해 봅시다.
단. 작업할때는 항상 branch를 이용하는것을 추천합니다.
만약 push를 하였을 경우에 commit을 조금이라도 지저분하지 않게 하기 위해서는 브랜치에서 해야지 force push를 할 수 있기 때문입니다.
다들 즐거운 주말요.
2019.11.19. 추가
reset option.
–soft : index 보존(add한 상태, staged 상태), 워킹 디렉터리의 파일 보존. 즉 모두 보존.
–mixed : index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 보존 (기본 옵션)
–hard : index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 삭제. 즉 모두 취소.
'Version Control' 카테고리의 다른 글
git. stash 실수로 없앴을때 복구 (2) | 2019.03.20 |
---|---|
git. rebase -i 이용하기. 커밋을 합치기 (0) | 2018.12.24 |
git. alias 이용 (0) | 2018.12.05 |
git. 원격 저장소 URL 변경하기 (0) | 2018.09.17 |
git. config 수정으로 사용자 이름 변경 (0) | 2018.09.17 |
- Total
- Today
- Yesterday
- git
- windows10
- Kotlin
- Windows
- Codable
- nodejs
- war
- github
- tomcat
- Xcode
- rxswift
- Gradle
- golang
- enum
- android
- CentOS
- docker
- cocoapods
- go
- ios
- ubuntu
- Java
- Python
- Spring
- php
- Linux
- SWIFT
- intellij
- MySQL
- centos8
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |