되돌아가기(git revert,reset,restore)
11 Jul 2023 | git코딩애플 강의를 보며 정리함
git restore
파일 하나 복구
파일 하나가 잘못되었을 때 ctrl + z 여러번 눌러도 되지만,
수정사항이 너무 많다면 명령어 하나로 처리할 수 있다.
git restore 파일명
이렇게 하면 최근 commit된 상태로 현재 파일의 수정내역을 되돌릴 수 있다.
git restore --source 커밋아이디 파일명
이러면 입력한 파일이 특정 커밋아이디 시점으로 복구된다.
git restore --staged 파일명
복구랑은 상관없지만, 특정 파일을 staging 취소할 수 있다.
git revert
commit 되돌리기
git revert 커밋아이디
그 커밋아이디에서 일어난 일만 취소해준다.
그림으로 예를들면 이렇게..
- revert 할 때 동시에 여러개의 commit id 입력 가능
- 최근 했던 commit 1개만 revert하고 싶으면 git revert HEAD하면 편리하다.
- merge 명령으로 인해 새로 만들어진 commit도 revert 가능하다.
git reset
시간 되돌리기 프로젝트 망하면 쓰거나, 짧은 거리를 돌아갈 때 쓰자
git reset --hard 커밋아이디
입력하면 그 커밋이 생성될 때로 시간을 되돌려준다.
작업폴더 내의 파일도 그 시절로 돌아간다.
이미지로 예를 들면..
중요사항!!!!
- 여러명이서 협업하는 리포지토리에는 reset을 쓰면 안된다.(갑자기 소스코드가 사라지는거니깐)
- untracked 파일들은 (git add 안해놓은 파일들은) 사라지지않고 유지된다.
- git clean 명령어 찾아서 쓰면 untracked 파일들도 다 지울 수 있다.
rest 옵션 설정 가능
git reset 뒤에 hard / soft / mixed 설정을 넣을 수 있다.
▲ a, b, c 파일을 만들면서 각각 commit을 했다..
git reset --hard d874b2b
이렇게 하면 a,b파일은 남아있고 c 파일이 삭제된다.
git reset --soft d874b2b
이러면 a, c파일은 남아있고 b 파일은 staging area에 남아있고
이제 commit 하거나 그럴 수 있다.
git reset --mixed d874b2b
이러면 a, c파일은 남아있고 b 파일은 staging 되지 않은 상태가 된다.
이제 git add 하고 commit 하거나 그럴 수 있다.
요약
reset은, 파일을 아예 지워버리는게 아니다.
검토하고 다시 commit 하고 싶으면 –soft/ –mixed 사용해보자.