티스토리 뷰

Tools/Git

[Git] revert

SdardewValley 2022. 6. 12. 20:52
반응형

revert

  프로젝트를 되돌리기 위해서 reset을 사용하면 commit들이 삭제되기 때문에 좋은 방법이 아니다. 프로젝트를 과거 시점으로 되돌면서 기존의 commit들을 삭제시키지 않기 위해서는 revert를 사용하면 된다.

  revert는 기존의 commit들을 삭제하지 않고 새로운 commit을 생성하여 프로젝트를 과거의 시점으로 되돌린다.

 

 

revert에서 log의 변화

기존의 log
git revert 사용

  git revert를 사용하면 메시지를 작성할 수 있는 vi 에디터가 나타난다.

 

git log

  로그를 출력하면 revert 메시지가 추가된 것을 확인할 수 있다. 그리고 파일들을 확인하면 이전의 시점으로 되돌아간 것을 확인할 수 있다.

 

 

여러 commit들을 revert

  마침표 2개(..)를 사용하여 여러 commit들을 revert할 수도 있다. 참고에 stackoverflow의 글을 참고하면 좋다. git revert commitId1..commitId2와 같이 사용하면 된다. 

 

  위와 같이 revert가 실행된다. 각 commit마다 vi 에디터로 확인을 해야 한다는 단점이 있다.

 

  --no-commit 옵션을 통해서 vi 에디터로 모든 commit을 확인해야 하는 것을 해결할 수 있다. --no-commit 옵션을 추가해서 같은 명령어를 실행하면 과거 시점으로 파일이 변경된다. 이렇게 변경된 내용을 add하고 commit을 사용하면 된다.

  revert할 commit들이 많은 경우 해당 옵션을 사용하면 된다.

 

 

병합 revert

병합 commit에 대한 revert 실패

  git revert [MERGE_COMMIT_ID]를 실행하면 병합 commit은 취소되지 않는다. m 옵션을 주어야 한다고 안내문이 출력된다.

 

git cat-file -p [MERGE_COMMIT_ID]

  m 옵션뒤에는 숫자가 와야 한다. git cat-file -p [merge_commit의_id]를 실행하여 번호를 확인할 수 있다. 더 위에 있는 parent가 1번, 그 아래에 있는 parent가 2번이다.

  m 옵션은 병합을 했을 때 되돌릴 대상의 브랜치를 지정하는 것이다. 여기에 1번인지 2번인지 추가를 하면 된다. m 옵션이 있는 이유는 병합은 2개의 브랜치를 통해서 하기 때문에 되돌릴 대상 브랜치를 지정하기 위해서이다.

  

 

참고

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함