RESET vs REVERT
- reset -- 원하는 시점으로 돌아간 뒤 이후 내역들을 삭제 (파일의 생성, 수정, 삭제 모두 과거로)
- 명령어 -- git reset --hard (돌아갈 커밋 hash code)
- 뒤에 커밋 hash code가 없으면 마지막 커밋을 가리킴
- history도 같이 삭제
- revert -- 되돌리기 원하는 시점의 커밋(취소할 커밋)만 거꾸로 실행
- 명령어 -- git revert (되돌릴 커밋 hash code)
- history에 취소한 내역 추가
- 명령어 -- git revert --no-commit (되돌릴 커밋 hash code)
- 커밋 되돌리고 add까지만
- 명령어 -- git revert (되돌릴 커밋 hash code)
REBASE
- 브랜치 병합 전략 중 하나
- 원래 용도는 브랜치 병합이지만 특정 commit 내역 수정/삭제 할 때도 사용됨
- 브랜치의 공통 조상이 되는 base를 다른 브랜치의 커밋 지점으로 바꾸는 것
- 이미 공개해서 사람들이 사용하는 커밋을 Rebase하면 반드시 문제가 생김
- rebase는 기록(commit)을 변경하며, merge는 기록을 있는 그대로 사용
삭제할 커밋 hash code 확인
- 1번째와 3번째 커밋 삭제하기
- hash code는 앞 5자리 정도만 알아도 됨
git rebase -i HEAD~3
- 수정할 commit을 HEAD 기준 3개를 에디터로 열기
- git rebase -i (hash code) -- 특정 커밋만 호출 가능
pick -> drop
- 삭제할 커밋의 hash code앞에 붙은 pick을 drop으로 바꿔줌
- pick에서 drop대신 reword를 쓰면 커밋 메시지도 변경 가능
결과
Success
참고 - https://www.atlassian.com/ko/git/tutorials/undoing-changes
'Git & GitHub' 카테고리의 다른 글
Git Branch 합치기 실습 (0) | 2022.11.24 |
---|---|
Git Branch (0) | 2022.11.22 |
.gitignore (0) | 2022.11.22 |
GUI / CLI (0) | 2022.11.18 |
Git Source Tree 활용 (0) | 2022.11.17 |
댓글