관리 메뉴

공부기록용

GIT(git reset&revert&checkout) 본문

💡깨달음💡/GIT

GIT(git reset&revert&checkout)

과부하가즈아 2023. 7. 26. 21:44

reset & revert & checkout

 

reset 

$ git reset [파일이름]

실수로 git add의 명령으로 working directory에서 staging area로 올려버렸을 때 해당 명령어를 통해 다시 working directory로 위치를 되돌릴 수 있다.

 

한 단계 나아가 최종 git commit의 수행으로 staging area에서 최종 repository로 올리는데 이때 잘못된 커밋 이력이 추가가된 경우, 해당 명령어와 커밋 해시, 옵션을 사용해 함께 입력하여 커밋 이력 되돌리기를 할 수 있다. 

 

git log oneline로 커밋 해시를 찾고,

 

git reset 005ba91_커밋 해시(이 커밋으로 되돌리겠다) --hard_옵션 의 명령어를 통해 상태를 되돌릴 수 있다. 


옵션
--hard: reset하기 전까지 했던 staging area, working directory의 작업까지 모두 reset!
(모든 게 잘못됐어! 나 돌아갈래~ 꽃피던 때부터 정갈하게 다시 해보자!)

--mixed(default): staging area은 reset, reset하기 전까지 했던 working directory의 작업은 남겨둠.
(현재 작업물은 지우긴 싫고, 이전 버전으로 돌아가서 add할지 말지 결정해야 할 때)

--soft: reset하기 전까지 했던 staging area, working directory의 작업은 남겨둠.

(reset한 버전과 현재까지의 작업을 합쳐 새로운 버전 만들 때)

> B_2에서 C_3으로의 내용 변경을 진행하고 commit까지 한 상황일 때,

git reset --hard B의 경우 3이라는 내용을 커밋했던 모든 과정이 사라지는 것으로 2의 내용으로 돌아가는 것

git reset --mixed B의 경우에는 3이라는 내용을 커밋했던 과정은 사라지지만 working dir에서 3이라는 내용을 작성했던 것은 남아있는 상태로 돌아가는 것

git reset --soft B의 경우에는 3이라는 내용을 최종으로 repo에 올렸던 과정만 사라지는 것으로 working dir에서 staging로 3이라는 내용을 올린 것 상태로 돌아가는 것이다. 


💫reset과 checkout의 차이점

reset : HEAD가 가르키고 있는 Branch를 바꾼다.
checkout : HEAD를 바꾼다. 

> C가 실제로 삭제되는 것은 아니므로 다시 불러올 수 있다.


만약 이런 수정 사항들도 기록으로 남기고 싶다면 git revert 명령어를 통해 특정 커밋의 수정 사항을 되돌리되, '커밋 수정 사항을 되돌렸다'는 사실을 이력으로 남길 수 있다.


revert 

git revert [되돌릴 커밋]커밋해시(이 커밋으로부터 되돌리겠다)

 

revert는 reset과 다르게 커밋을 삭제하는 것이 아닌 커밋을 추가한다. 잘못된 작업도 commit으로 남겨두고 싶을 때 사용(협업할 때 reset보다 안전)

 

git reset 명령어는 취소하려는 커밋 자체를 커밋 이력에서 제외하지만, git revert는 커밋 변경 사항을 되돌렸다는 새로운 커밋을 커밋 이력에 생성한다.

 

 

 

참고

https://www.youtube.com/@uknowcoding

https://opentutorials.org/module/4032

https://kyounghwan01.github.io/blog/etc/git/git-reset-revert/#reset

https://scshim.tistory.com/235

 

 

'💡깨달음💡 > GIT' 카테고리의 다른 글

git clone과 remote, pull  (0) 2023.09.08
GIT(Git branch 전략_git flow, github flow)  (0) 2023.07.27
GIT(Branch)  (0) 2023.07.26
GIT(GitHub와 연결)  (0) 2023.07.26
GIT(commit이력 관리하기)  (0) 2023.07.25
Comments