머지 커밋(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/
'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 |