Project.log

깃 버전 되돌리기 본문

GIT

깃 버전 되돌리기

jinuk_ 2023. 7. 11. 23:32
728x90
반응형

git에서 push와 pull을 하다가 오류가 나면 항상 revert를 쓰곤했는데

항상 모르고 썼었다 이번기회에 확실히 알고자 한다.

 

목차

  1. git revert 를 통해 버전 되돌리기
  2. git reset 을 통해 버전 되돌리기

 

 

1. git revert를 통해 버전 되돌리기

git revert현재까지의 commit 기록을 유지하면서, 특정한 commit 이전으로 되돌리는 명령어 입니다.

 

아래 사진에는 파일내용에는 두줄에 문장이지만 revert를 사용하여 첫줄에 있는 문장만 있던 test.txt로 

파일을 직접 수정하지 않고 버전 관리만으로 되돌아가보겠습니다.

git log

우선 git log를 통해 어떤 commit이 있었는지 봅니다.

되돌아갈 때는 commit 이름을 명시해야하는데, 주의할 점은 되돌아가고 싶은 commit 이름을 적는게 아니라, 되돌리고 싶은 commit 이름을 적어야한다는 것입니다.

, '첫번째 문장입니다.'라는 test.txt 파일로 돌아가려면, ‘두번째 문장입니다.’ 라는 텍스트를 추가했던 커밋 (두번째 커밋) commit

a47632~~ 라는 commit revert 해야합니다.

git revert (파일명)
git revert a47632

git revert a47632만 입력했는데요. 특정 커밋을 지칭할 때는 앞자리 6개만 적어주시면 됩니다.

 

아래사진을 보시면 뭔가 표시됩니다.

사실 revert 를 쓰면 버전을 되돌아가는 것도 하나의 commit 으로서 기록되기 때문에, 커밋 메세지를 써달라고 표시가 된 것입니다.

(5번째 줄에 보시면 Please enter the commit message 라고 적혀있습니다. , 커밋 메세지를 써달라는 뜻입니다.)

i를 누른후에 ESC -> :wq로 빠져나오자

:wq로 저장하며 빠져나옵니다.

 

다시 git log 입력해보면, 아까 commit 했었던 기록들은 남아있고, Revert 또한 하나의 commit 으로서 남아있게 됩니다.

Revert "second"

 

이제 파일을 보면 '첫번째 문장입니다'만 남게 됩니다.

 

TIP!

되돌리기 위해서는 reset 이라는 명령어도 있지만, 협업을 때는 최대한 기록을 남기기 위해 revert 주로 사용하게 됩니다.

 

2. git reset을 통해 버전 되돌리기

git reset 은 특정 커밋으로 돌아가면서, 그 커밋 이후의 커밋 기록을 삭제하는 명령어입니다. 마치 그 이후의 커밋이 없었던 것처럼 만들어주는 것입니다.

 

git reset 에는 다양한 옵션이 있는데, 우선 --soft 부터 보겠습니다.

git reset --soft (커밋번호)

→ git reset 은 revert 와 반대로, 되돌리고 싶은 commit 이 아니라, 되돌아가고 싶은 commit 을 명시해야한다는 점 주의해야 합니다.

우선 git log 를 통해서 커밋명을 확인하겠습니다. 여기서 저는 ‘첫번째 문장입니다. 두번째문장입니다.’ 라고 작성하고 기록했던 commit 으로 돌아가려고 합니다.

git reset --soft a47632

그래서 git reset --soft a47632 라고 작성했더니, revert 하면서 기록되었던 commit (a47632) 가 아예 없어진 것을 확인할 있습니다.

 

분명히 되돌린 것 같은데, 파일 내용은 그대로 ‘첫번째 문장입니다.’ 입니다.

그 이유는 reset --soft 의 경우, 수정 사항 (이후의 커밋 내용) 에 대해서 그대로 두고, 기록만 삭제하는 것이기 때문입니다.

(정확히는 수정사항 (이후의 커밋 내용) 을 단순히 commit 하기 전 상태(→ staging 영역에 놔둠)로 두는 것입니다.)

 

 

이제 reset --hard를 보겠습니다.

한국어 폴더명은 신경쓰지 말아주세요

우선 다시 원래대로 돌려놓았습니다.

 

이제 ‘첫번째 문장입니다. 두번째 문장입니다.’ 라는 파일에서 '첫번째 문장입니다."로

돌아가려고 git reset --hard 명령어를 사용하였습니다.

git reset --hard
git reset --hard 4040a7

명령어를 입력하자 아래와 같이 변하였고

git log를 했을때 커밋기록이 하나만 있는것을 확인 할 수 있습니다.

 

git reset --hard 는 reset 에 명시한 그 커밋 이후의 모든 수정사항들을 완전히 삭제하는 기능을 가지고 있습니다.

그래서 —soft 로 했을 때와는 다르게, 바로 해당 커밋의 내용으로 파일이 되돌아가는 것입니다.

728x90
반응형

'GIT' 카테고리의 다른 글

깃 커밋 컨벤션 정하기  (0) 2023.07.13
깃 .gitignore 쉬운 세팅법  (0) 2023.07.13
깃 정리  (0) 2023.04.12
깃 변경내용확인하기  (0) 2022.08.27
깃 버전 만들기  (0) 2022.08.24