에러 발생 원인
- 위 에러는 여러 환경에서 작업을 하거나, 협업을 하면서 발생할 수 있다.
(대개 git 으로 pull 하는 과정에서 많이 일어난다.
- 사용자가 commit 을 하기 전에 pull을 받아 로컬을 업데이트 하지 않았거나,
pull 을 받을 때 이미 HEAD와 소스가 다를 때 주로 발생한다
(Repository HEAD 상황과 나의 로컬 상황이 달라서 발생)
- 정리하자면, 파일의 소스가 충돌이 일어난다는 것이다.
에러 확인 방법
pull 을 실행할 때, 'Checkout conflict with files : ~~~ (file 경로)' 라는 경고 문구가 뜬다
그러면 에러 로그를 클릭하여 어디 부분에 에러가 났는지 확인하면 된다.
해결 방법
- 해결 방법은 대개 두가지로 나뉜다.
1. Merge
- 에러라고 알려주는 해당 경로의 파일을 확인하고 찾아가서 commit 하고, (따로 내용 변경하지 않고)
- pull 을 시도하여 이클립스에서 merge tool 을 이용해 변경점을 코드에 반영한다
2. compare with head 로 해결 (직접 코드를 비교)
말 그대로 직접 코드를 비교하면서 바뀐 부분을 고친 후 바꿔주는 것이다
프로젝트 우클릭 -> Team -> Synchronize WorkSpace -> Conflict Mode (빨간색 양쪽 화살표) 충돌나는 파일을 찾고
Project Explorer에서 해당 파일을 우클릭 -> Compare With - HEAD Revision
말그대로 HEAD와 현재 로컬 소스를 비교하면서 고쳐준다
마지막으로는, 그래도 안될 때 쓰는 내가 찾아낸 방법이다.
3. 강제 reset 후 pull 하기
위 방법들이 다 소용이 없을 때 쓰는 방법이다.
나의 경우에는 classpath 를 찾을 수 없어 서 위 방법을 사용했다.
방법은 프로젝트 우클릭 -> Team -> Reset -> HARD
를 선택후 Reset 버튼을 클릭한 후에 pull 을 다시 시도하면 된다.
그 이후 프로젝트에 원활한 pull 이 이루어 졌다.