티스토리 뷰

Version Control

git. commit, add, pull, merge 취소

out of coding 2018. 12. 21. 19:11

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 상태), 워킹 디렉터리의 파일 삭제. 즉 모두 취소.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
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
글 보관함