인프런 커뮤니티 질문&답변
revert 에서 에러가 발생하는데 이유를 모르겠습니다.
작성
·
1.8K
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. 정상이 아니라면 왜 저는 충돌이 났을까요?
감사합니다
퀴즈
`git reset --hard` 명령이 워킹 디렉토리, 스테이징 영역, 저장소에 미치는 영향은 무엇일까요?
저장소만 지정된 커밋으로 되돌립니다.
워킹 디렉토리, 스테이징 영역, 저장소 모두 지정된 커밋 상태로 초기화합니다.
스테이징 영역과 저장소만 되돌리고 워킹 디렉토리 변경사항은 유지합니다.
워킹 디렉토리와 스테이징 영역만 되돌리고 저장소는 그대로 둡니다.
답변 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 뒤에 적어주는 줄 알았습니다.
해결됐습니다