강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của wintermin3624
wintermin3624

câu hỏi đã được viết

Git nhanh chóng - tìm hiểu Git/Github bằng cách chỉ chọn phần lõi

Tài liệu bổ sung - diff & revert

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

Viết

·

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. 정상이 아니라면 왜 저는 충돌이 났을까요?

 

감사합니다

githubgit버전관리시스템

Câu trả lời 3

1

kangminchul님의 프로필 이미지
kangminchul
Người chia sẻ kiến thức

음... 제 생각에는 명령어를 잘못 입력하신 것이 아닌가 싶습니다.

혹시 어떻게 명령어를 입력하셨나요?

저는 아래와 같이 잘 되거든요.

 

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
Người đặt câu hỏi

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

해결됐습니다

1

kangminchul님의 프로필 이미지
kangminchul
Người chia sẻ kiến thức

안녕하세요 ^^

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

 

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

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

 

질문자님의 코드의 경우,

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

 

충돌이 발생했을 경우, 

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

 

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

 

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

 

감사합니다.

rweteam님의 프로필 이미지
rweteam
Người đặt câu hỏi

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

0

rweteam님의 프로필 이미지
rweteam
Người đặt câu hỏi

답변감사합니다

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

첫 커밋에서

A

두번째 커밋에서

A
B

이렇게 진행했고

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

 

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

Hình ảnh hồ sơ của wintermin3624
wintermin3624

câu hỏi đã được viết

Đặt câu hỏi