인프런 커뮤니티 질문&답변

rweteam님의 프로필 이미지

작성한 질문수

빠르게 git - 핵심만 골라 배우는 Git/Github

추가자료 - diff & revert

revert 에서 에러가 발생하는데 이유를 모르겠습니다.

작성

·

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
rweteam님의 프로필 이미지
rweteam
질문자

감사합니다. 여태까지 되돌아갈 커밋을 git revert 뒤에 적어주는 줄 알았습니다.

해결됐습니다

1

강민철님의 프로필 이미지
강민철
지식공유자

안녕하세요 ^^

revert는 이전 커밋의 변경사항을 취소하는 '새로운' 커밋을 만드는 커밋입니다.

 

그렇기에 revert하여 추가할 커밋이 지금의 상태와 같은 라인을 변경한다면 

충돌이 발생할 수 있습니다.

 

질문자님의 코드의 경우,

이전의 EF와 새로운 커밋으로 만들기 위한 E가 같은 라인이기 때문에 충돌이 발생한 것입니다.

 

충돌이 발생했을 경우, 

하셨던 것처럼 충돌을 해결해주고 add 후 commit 하시면 됩니다 :)

 

보다 자세한 예제 및 설명이 필요하시다면 아래 링크를 참조해보세요!

 

https://stackoverflow.com/questions/46275070/why-do-i-get-conflicts-when-i-do-git-revert

 

감사합니다.

rweteam님의 프로필 이미지
rweteam
질문자

추가 질문을 아래에 적어놨습니다~

0

rweteam님의 프로필 이미지
rweteam
질문자

답변감사합니다

근데 오늘 새로운 라인으로 테스트를 해보았는데 똑같은 충돌이 발생했습니다.

첫 커밋에서

A

두번째 커밋에서

A
B

이렇게 진행했고

A만 있던 커밋으로 revert를 하자 충돌이 발생했는데요..

 

이러면 다른 라인이니까 충돌이 발생하지 않아야되는게 아닌가요??

rweteam님의 프로필 이미지

작성한 질문수

질문하기