일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JS append
- JS 숫자
- JS 스코프
- JS form
- JS 연산
- JS 형변환
- JS setTimeout
- JS null undefined
- JS 함수
- JS 기초
- CSS속성정리
- JS redirection
- JS typeof연산자
- HTML기초
- git 협업셋팅
- JS 데이터타입
- JS clearInterval
- JS form action
- JS 타이머기능
- JS 삼항연산
- JS classList
- JS appendChild
- JS localStorage
- JS setInterval
- JS 화살표함수
- JS prompt
- JS value속성
- JS preventDefault
- CSS기초
- js 변수
공부기록용
GIT(git reset&revert&checkout) 본문
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 |