본문 바로가기
IT/gitHub

이클립스에서 git 충돌시 해결방법

by heavenLake 2024. 4. 26.
반응형

방법 0 : merged 

방법 1 : merge toll 사용 

방법 2 : overwrite

방법 3 : Replace With HEAD Revision

방법 4 : Reset (Head의 위치를 조정한다. 이건 정확한 정의를 이해하기전에는 쓰지마라

                    Commit된 위치가 조정 취소 될수 있다.)

        Git Respositories > 프로젝트명 > Branches > Local > master 에서 마우스 오른쪽

        'reset' 클릭 후 hard 선택 =>  프로젝트명에서 마우스 오른쪽 누르고 Pull 선택

 

방법0 :  merged 사용(왠만하면 비추)  - 나와 다른개발자가 개발한 부분이 몇 라인 안되고 명확히

           다르면  편리하지만 같은 라인이면 오류나고 오류가 안나더라도  이상하게 merge되는

           경우가 있다.  Team > Merge 선택

 

방법1 : merge toll을사용해서 반영해야 하는 부분과 pull 받아야 하는 부분을 수정해서 다시 commit 합니다.

         그런 다음 pull을 받고 push를 하면 충돌이 해결됩니다.

         (이건 내가 수정한 내용을 commit해야하는 경우 사용)

          참고 : Eclipse Git Merge Conflict 해결 방법 - CURVC DevOps - Confluence DC

 

방법2,3 : - overwrite : 싱크화면에서 오른쪽클릭 mark as mergedoverwrite 실행 이후 Full

               - revision : Git Staging화면에서 오른쪽클릭 Replace With HEAD Revision 후

                 다시 Full 받는다.

                 위 두개다 로컬에 소스를 git에 있는 소스로 덮어쓰는 방법입니다.

                 (HEAD Revision은 브런치 HEAD 시점이다.  밑에 참고내용 확인)

 

- Replace With HEAD Revision

 
해당 소스를 선택하고, 우클릭 ▶ Replace With ▶ HEAD Revision 메뉴를 선택하여 원격 저장소의 소스로 로컬 소스를 원복 합니다.

 

Replace-With-HEAD-Revision

 

 

· Discard Changes 버튼을 클릭하면, 로컬 소스가 원격 저장소의 소스로 덮어 쓰입니다. 만약 작업한 내역이 있다면, 미리 소스를 백업받아 둡니다.

이제 다시 pull 처리를 하면, 정상적으로 소스가 업데이트 처리됩니다.

 

 

--------- 여기서 부터는 참고 내용 -----------------------------------------------------------

 

------------------------------------------------------

replace head revision 이란 

------------------------------------------------------

 

1. 테스트

test.txt 의 내용은 얼마전에 작성한 [이클립스에서 git fetch 확인] 이라는 텍스트를 최종으로 한다.

이대로 파일 우클릭 -> Replace With -> HEAD Revision 을 하면 아무런 변화가 없다.

그냥 쓸데없는 텍스트 [123123]을 입력하고 다시 파일 우클릭 -> Replace With -> HEAD Revision 을 하면

커밋되지않은 변경사항을 버린다? 는 메세지 창이 표시된다.

Untracked files will be ignored. 추적되지 않은 파일은 무시될 것이다.

라는 메세지

그리고 파일의 내용은 123123이 없어지고 최초 확인했던 상태로 원복되었다.

커밋되지않은 변경사항을 버린다

 

2. 테스트

파일의 내용을 변경 & 저장 한다.

커밋만 한다.

origin/master 는 이클립스에서 git fetch 확인 커밋 [8e1c613]을 가리키면서 로컬저장소에는 Replace With - HAD Revision#1 커밋 [48f71fc] 이 추가되었다.

HEAD 는 새로운 커밋 [48f71fc] 를 가리킨다.

그 상태에서 다시 [123123] 이라는 더미 텍스트를 추가하고 test.txt 파일을 저장한다.

파일 우클릭 -> Replace With -> HEAD Revision 기능을 실행해보면

Discard Uncommited Changes 메세지창이 동일하게 표시되고

Discard Changes 버튼을 클릭하면

로컬저장소에 최종 커밋했던, HEAD가 가리키던 상태로 test.txt 파일이 복원된다.

일반적인 의미로 원복/복원 이라는 용어를 정의하기는 애매하지만, Replace With - HEAD Revision 이 단순히 원격저장소의 내용으로 파일 내용을 복원하는 기능이 아니라는 점은 확실해졌다.

결론

Replace With -> Head Revision 기능은

파일의 변경사항을 HEAD가 가리키는 내용으로 변경한다.

 

참고 사이트 :

- https://m.blog.naver.com/piyoro/222039082287

- https://smartdatastory.tistory.com/entry/%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4-git-%EC%86%8C%EC%8A%A4-%EC%B6%A9%EB%8F%8C-%EC%97%90%EB%9F%AC%EB%A1%9C-%EC%9D%B8%ED%95%B4-pull-%EC%95%88%EB%90%A8-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95

 

반응형

댓글