되돌아가기(git revert,reset,restore)

|

코딩애플 강의를 보며 정리함

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 사용해보자.