[Git] Restore, 그리고 reset 활용방법과 복구방법

Git 2023. 6. 26.

 

  목 차

  • restore를 활용하여 파일 되돌리기
  • 최신 commit 수정하기
  • Reset
  • 실수로 지웠다면?
  • Local history

 

 


 

 

⛔️ 로컬 저장소에서의 변경사항에 대해 작동하며, 원격 저장소에 반영되지 않은 변경사항들에 대해서만 사용하는 것을 권장한다.

 

 

  restore를 활용하여 파일 되돌리기  

 

되돌리려는 파일이 staging area에 있을경우 아래 명령어를 작성

git restore --staged 파일_이름

 

 

되돌리려는 파일이 working directory에 있을경우 아래 명령어를 작성

git restore 파일_이름

 

 

⚠️ 유의할 점은 staging area에서 restore를 사용하면 변경사항이 unstaged 상태가 되고 원래의 파일 내용이 유지된다는 것이다. 반면, working directory에서 restore를 사용하면 해당 변경사항이 완전히 지워지고 파일이 변경 전 상태로 되돌아간다는 점이다.

 

 

 

그리고 reset 이라는 명령어도 있는데, reset은 특정 commit으로 작업 내역을 되돌리거나, staging area의 변경 사항을 unstage 하는 데에도 사용된다. 아래에서 reset에 대해서 더 자세하게 알아보려고 한다.

git reset 커밋_해시코드

 

git reset

 

 

 

  최신 commit 수정하기

 

최신 commit은 --amend 옵션으로 수정할 수 있다.

git commit --amend -m "수정된 메세지"

 

 


  Reset

 

reset은 위에서 봤었던 것 처럼 특정 commit으로 되돌릴 수 있다.

그리고 리셋된 작업 변경사항은 working directory로 이동된다.

# 둘 다 특정 커밋으로 초기화하는 명령어 이다.
git reset 커밋_해시코드
git reset HEAD~숫자

reset 명령어에 별도의 옵션을 주지 않으면 --mixed 라는 옵션을 사용한 것과 같다.

 

mixed 옵션은 변경사항들을 Working directory로 가지고 오게된다.

soft 옵션은 변경사항들을 Staging Area로 가지고 오게된다.

 

그리고 완전 삭제해버리는 옵션도 있는데 --hard 이다.

 

 


 

  실수로 지웠다면?

 

아래 명령어를 통해서 내가 했었던 작업들의 로그를 볼 수 있다.

그리고 돌아가려고 하는 작업의 해시코드를 복사한다.

git reflog

 

그리고 다음 명령어를 작성하여 돌아갈 수 있다.

git reset --hard 해시코드

 

단, commit 하기 전에 --hard로 리셋된 파일은 돌아가기 힘들다.

 

 


  Local history

 

commit 전에 파일을 --hard로 리셋했다면, Local history 라는 익스텐션으로 복구할 수 있다.

 

 


  Revert - history에 남기면서 commit 취소하기

 

이렇게 취소하게 되면 history에도 남는다. master branch에서 문제가 생겼을 경우 reset이나 restore 보다는 revert를 추천한다.

git revert 해시코드(취소하는)