작성
·
1.6K
0
최종커밋 결과
ABCD
EF
인 상태에서 이전 커밋결과인
ABCD
E
로 revert 하려고했습니다.
revert를 해보니 아래와 같은 에러가 발생했는데요
충돌 (내용): diffp에 병합 충돌
error: 다음을 되돌릴(revert) 수 없습니다: 8d0a9f3... F
힌트: 이 충돌을 해결한 뒤에, 바로잡은 경로를
힌트: 'git add <경로>' 또는 'git rm <경로>'로 표시하십시오.
힌트: 그리고 결과물을 'git commit'으로 커밋하십시오
diffp 파일을 열어보니 충돌이 난 것 처럼
<<<<<< 와 >>>>> 표시가 있었습니다.
수정하고싶은 부분을 수정하고
staging area 로 add한 후에 커밋을하니까
그제서야 revert가 동작했습니다.
질문은 아래와 같습니다.
1. 원래 이렇게 충돌이 나는게 정상인가요?
2. 그렇다면 왜 선생님이 revert 할 땐 충돌이 나지 않았을까요?
3. 정상이 아니라면 왜 저는 충돌이 났을까요?
감사합니다
답변 3
1
음... 제 생각에는 명령어를 잘못 입력하신 것이 아닌가 싶습니다.
혹시 어떻게 명령어를 입력하셨나요?
저는 아래와 같이 잘 되거든요.
git reset <되돌릴 커밋> 입니다.
가령 지금이 두번째 커밋이라면 git reset <두번째 커밋> 으로 작성하시면 됩니다.
minchul@DESKTOP-9KULGUE MINGW64 /c/test (master)
$ echo A >> test.txt
minchul@DESKTOP-9KULGUE MINGW64 /c/test (master)
$ git add .
minchul@DESKTOP-9KULGUE MINGW64 /c/test (master)
$ git commit -m "1"
[master (root-commit) bab6dc9] 1
1 file changed, 1 insertion(+)
create mode 100644 test.txt
minchul@DESKTOP-9KULGUE MINGW64 /c/test (master)
$ echo B >> test.txt
minchul@DESKTOP-9KULGUE MINGW64 /c/test (master)
$ cat test.txt
A
B
minchul@DESKTOP-9KULGUE MINGW64 /c/test (master)
$ git commit -am "2" # add와 commit을 동시에 하고 commit 메세지는 "2"로 한다
[master 6abeae2] 2
1 file changed, 1 insertion(+)
minchul@DESKTOP-9KULGUE MINGW64 /c/test (master)
$ git log
commit 6abeae25a7fb58c785abbfbe624906bc45f67856 (HEAD -> master)
Author: Kang Minchul <tegongkang@gmail.com>
Date: Thu Dec 30 10:51:53 2021 +0900
2
commit bab6dc9183362cb93315c320e73c9d4930d46dc3
Author: Kang Minchul <tegongkang@gmail.com>
Date: Thu Dec 30 10:51:36 2021 +0900
1
minchul@DESKTOP-9KULGUE MINGW64 /c/test (master)
$ git revert HEAD # git revert 6abeae25a7fb58c785abbfbe624906bc45f67856 로 입력해도 무방
[master 26db2ad] Revert "2"
1 file changed, 1 deletion(-)
minchul@DESKTOP-9KULGUE MINGW64 /c/test (master)
$ cat test.txt
A
1
안녕하세요 ^^
revert는 이전 커밋의 변경사항을 취소하는 '새로운' 커밋을 만드는 커밋입니다.
그렇기에 revert하여 추가할 커밋이 지금의 상태와 같은 라인을 변경한다면
충돌이 발생할 수 있습니다.
질문자님의 코드의 경우,
이전의 EF와 새로운 커밋으로 만들기 위한 E가 같은 라인이기 때문에 충돌이 발생한 것입니다.
충돌이 발생했을 경우,
하셨던 것처럼 충돌을 해결해주고 add 후 commit 하시면 됩니다 :)
보다 자세한 예제 및 설명이 필요하시다면 아래 링크를 참조해보세요!
https://stackoverflow.com/questions/46275070/why-do-i-get-conflicts-when-i-do-git-revert
감사합니다.
0
답변감사합니다
근데 오늘 새로운 라인으로 테스트를 해보았는데 똑같은 충돌이 발생했습니다.
첫 커밋에서
A
두번째 커밋에서
A
B
이렇게 진행했고
A만 있던 커밋으로 revert를 하자 충돌이 발생했는데요..
이러면 다른 라인이니까 충돌이 발생하지 않아야되는게 아닌가요??
감사합니다. 여태까지 되돌아갈 커밋을 git revert 뒤에 적어주는 줄 알았습니다.
해결됐습니다