티스토리 뷰

Git Revert Commit (이전 커밋)으로 되돌리기

 

Revert의 개념을 확실히 잡기 위해 아래와 같이 example.txt라는 파일 하나에

vscode - example 파일 내용

"1번"이라 기재 후 커밋

"2번"이라 기재 후 커밋

"3번"이라 기재 후 커밋

"4번"이라 기재 후 커밋

"5번"이라 기재 후 커밋

 

총 다섯 번의 커밋을 진행 후

소스트리 - 총 다섯번의 커밋

 

네 번째 커밋에서 Revert 적용

 

conflict(충돌) 발생

 

충돌로 인해 변경 된 소스

VSCODE(Visiul Studio Code) - 변경된 소스

 

필자는 네 번째 커밋 정보에서 Revert.. 결국 세 번째 내용으로 되돌아 가는 것이니 아래와 같이 소스 수정 및 저장 후

(vscode를 사용중이라면 "Accept Incomming Change" 사용 추천) 

 

 

충돌로 Unstaged에 있는 파일을 Add 해서

 

Stage로 올린 후 커밋 및 푸시

 

충돌 해결 및 되돌리기 완료!

 

※ "팀 개발을 위한 Git GitHub 시작하기"라는 책을 읽다 보니 "Revert는 최신 커밋부터 취소하는 것이 좋다"라는 이유를 알게 되었네요.. 왜? 최신 커밋부터 Revert하면 충돌로 인한 시간 낭비를 없앨 수 있기 때문에

 

테스트로 마지막으로 커밋 된 "4-1. 네 번째 Revers 충돌 수정"에서 Revert를 실행해 보시기를.. 충돌 없이 Push만~

아울러 Revert는 다음에 설명할 Reset과 다르게

Commit을 삭제하는 것이 아닌, 이전의 Commit 내역을 삭제하지 않고, 새로운 Commit을 생성하는 방식  

아래의 History를 보면 1~5까지 삭제된 Commit이 존재하지 않고 새롭게 Commit이 생성된 것을 확인 할 수 있음

(Revert... 이라는 메시지 영역)

 

 

※ 추가로

비쥬얼스튜디오 코드는 충돌 해결을 위한 매우 유용한 툴이라 생각됩니다. 

간단히 기능을 정리하자면

  • Accept Current Change를 선택하면  "====="를 기준으로 위의 코드 HEAD(현재 작업중인 브런치, 현재 작업중인 브랜치의 최근 커밋을 의미) 영역이 남고
  • Accept Incoming Change를 선택하면 "====="를 기준으로 아래의 코드가 남고
    (병합 대상이 된 브랜치의 내용으로 변경됨. 위에서 보여준 경우가 이에 해당됨)
  • Accept Both Change를 선택하면 위, 아래 모두 코드가 남음
  • Compare Change를 선택하면 충돌남 부분을 좀 더 보기 쉽게 아래와 같이 보여줌

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday