728x90

머지 커밋(Merge commit)이란?
그냥 커밋된 게 아닌 다른 것과 머지되면서 커밋된 것

머지 커밋(Merge commit)을 되돌릴 때(revert)는 어느 쪽 커밋으로 되돌릴 지(revert) 지정해주어야함
머지커밋 자체가 두개의 커밋이 하나로 합쳐진 것이기 때문에 두 커밋 중 어떤 걸로 되돌릴 지를 프로그램에게 알려줘야 되돌 수 있기 때문

git revert -m [순서번호] [commit hash]

 

 

순서번호 : git show에서 보여지는 Merge: 뒤의 값들에 차례대로 번호가 부여됨

git show ffea3b82201dc62a8741b414ebaec5dadcb2145d
commit ffea3b82201dc62a8741b414ebaec5dadcb2145d
Merge: f035f31 69bdd0d
Author: neverGiveUppppp <csy@naver.com>
Date:   Thu Feb 23 14:21:11 2023 +0900

    merge conflict resolve practice(feat.reminder)

git show한 ffea3b8은 f035f31과 69bdd0d 커밋이 merge된 커밋이라는 의미
이를 그냥 revert하면 아래의 에러 메시지가 발생하며 실패한다

 

error: commit [hashId] is a merge but no -m option was given.
fatal: revert failed

 

 

f035f31과 69bdd0d 둘 중 어떤 쭉으로 revert할지 프로그램에게 알려줘야한다
f035f31커밋으로 되돌리려면 -m 1
69bdd0d 커밋으로 되돌리려면 -m 2를 지정

git revert -m 1 f035f31  // f035f31
git revert -m 2 69bdd0d  // 69bdd0d 

(git show에서 보여지는 Merge: 뒤의 값들에 차례대로 번호가 부여됨)

 

1.머지커밋 된 커밋id를 찾는다
2.git show 해당 커밋id로 검색
3.git revert -m 1,2에 넣을 1,2번 번호와 커밋 내용을 보고 1,2번 어느 쪽으로 되돌릴 지 파악
4.git revert -m 1 해당커밋id(git show에서 썼던 id)
5.컨플릭트 발생할 거임
6.vi(http://6.vi) 파일명 해서 컨플릭트 내용 정리
7.컨플릭트 내용 삭제하고 다시 리버트하면 unmerger파일 에러 발생
8.여기서 부터는 언머지 파일을 삭제하던 뭐하던 옵션 선택

  • git rm [filename]
  • git revert --continue : 충돌 해결 및 런
  • git revert --skip : 되돌리기 하지만 이 패치 스킵
  • git revert --abort : 되돌리기 취소

 

cf) commit hash 확인하는 방법

1.Git Bash
git log

2.GitHub
커밋 히스토리 - 해당 커밋의 해쉬 클릭 - commit에서 해쉬 복사

 

참고자료
https://kyounghwan01.github.io/blog/etc/git/git-reset-revert/#reset
https://www.lainyzine.com/ko/article/git-revert-reverting-commit-in-git-repository/

728x90
반응형

'Git & GitHub' 카테고리의 다른 글

[Git] Working Directory, Staging Area, Repository 개념  (0) 2023.03.18
[Git] git rm 정리  (0) 2023.03.12
[Git] git revert 정리  (0) 2023.03.04
[Git] git add -p  (0) 2023.03.01
[Git] git log 정리  (0) 2023.02.17

+ Recent posts