본문 바로가기
개발/Git & GitHub

Git에서 이전 상태로 되돌리는 방법 알아보기( git revert, reset, restore )

by ▩▦▤▧▩▥ 2023. 5. 28.
반응형

지난번 글에서 Git Branch를 Merge 할 수 있는 여러 방법들에 대해서 알아보았습니다. 이번 글에서는 작업을 하다 이전 상태로 파일이나 커밋 상태를 돌리고 싶을 때, 어떠한 방법으로 돌릴 수 있는지 알아보도록 하겠습니다.

 

 

목차
Git Revert
Git Restore
Git Reset

 

 

Git Revert : commit을 되돌리고 싶을 때

 

작업을 하다 보면 예전에는 몰랐는데, 어느 특정 commit에 문제가 있는 것을 발견할 때가 있습니다. 이럴 때 해당 commit을 없애 버리고 싶을 때가 있는데요. 이럴 때 쓸 수 있는 방법이 git revert입니다.

 

vscode 터미널 화면

위 사진을 보면 commit이 3개가 있습니다. 이때 CSS 파일에 문제가 있어서 commit을 취소하고 싶다면 git revert를 통해 commit을 취소한 것처럼 신규 commit을 하나 생성해 줍니다. 아래와 같이 터미널에 입력해 주세요.

 

git revert commitId

위의 명령어를 입력하면 에디터가 나타날 테고 메시지 적용한 다음에 저장해 주시면 됩니다.

vscode 화면

 

 

git revert의 경우, 해당 commitId에서 진행되었던 것들만 취소가 됩니다. 저의 경우에는 생성한 CSS가 삭제되는 것을 알 수 있습니다. 그리고 신규 commit도 생성된 것을 확인할 수 있습니다.

 

vscode 터미널 화면

 

 

 

Git Restore : 파일을 되돌리고 싶을 때

만약 오전 내내 코딩을 했는데, 점심 먹고 들어오니 왠지 좀 더 괜찮은 게 생각나서 수정하려고 했더니 너무 수정사항이 많은 경우들이 있습니다. 이럴 때는 특정 파일을 원하는 시점으로 돌릴 수가 있는데, 이때 git restore를 사용해 줍니다.

 

최근 commit 된 상태로 파일을 되돌리기

git restore 파일명

위와 같이 입력하면 최근 commit 된 시점으로 해당 파일을 되돌릴 수 있습니다.

 

 

특정 commitId 시점으로 파일 되돌리기

git restore --source commitId 파일명

위와 같이 입력하면 해당 파일을 commitId 시점으로 되돌릴 수 있습니다.

 

 

 

Git Reset : 특정 시점으로 아예 되돌리고 싶을 때

그럴 일이 없으면 좋겠으나, 정말 어쩔 수 없이 특정 시점으로 프로젝트를 돌려야 할 때가 있다면 git reset을 사용할 수 있습니다.

 

git reset --hard commitId

위와 같이 입력하면 commitId 시점으로 모든 상태를 되돌립니다. 솔직히 이건 안 쓰는 게 좋습니다. 협업할 때는 당연히 쓰면 안 되고, 나 혼자 작업할 때도 안 쓰는 게 좋습니다. 저거 쓴다는 것 자체가 이미 프로젝트 망조가 들었다는 거니깐요..

 

 

알아두면 좋은 Reset시 옵션 설정

git reset --soft commitId

commitId 시점까지 남아있고 이후의 것들은 staging area에 남아있다.

 

 

git reset --mixed commitId

commitId 시점까지 남아있고 이후의 것들은 staging 하지 않은 상태로 남아있습니다.

 

 

git reset --hard commitId

commitId 시점까지 남아있고 이후의 것들은 존재하지 않습니다.

 

 

 

이번 글에서는 상황에 따라 내가 원하는 상태로 파일이나 Git 상태를 되돌리는 방법에 대해서 알아보았습니다. 다음 글에서는 Github를 사용하는 방법에 대해서 알아보도록 하겠습니다.

반응형

댓글