본문 바로가기
Error Resolution

GitHub DIRTY_WORKTREE 에러 해결

by shyun2 2022. 5. 13.

 

DIRTY_WORKTREE 에러

 

썸네일
Dirty_worktree

      *프로젝트 협업하는 팀원의 닉네임은 모자이크 처리했습니다.

 

이클립스와 GitHub를 통한 협업 프로젝트를 진행하다 보면 한 번씩 경험해 볼 수 있는 에러이다.

이클립스는 내가 수정한 혹은 업데이트한 파일들을 commit 하기 전, 상대의 commit을 먼저 pull 받고 진행해야 충돌을 최소한으로 줄일 수 있다. 충돌에는 여러가지 이유가 있지만 그중에서도 제일 빈번하게 일어나는 충돌은,

예를 들어 A와 B가 같은 파일(index.jsp)을 각자 수정 후 commit을 했다고 치자. 이때 협업자 C가  수정된 index.jsp를 받아오기 위해

pull 을 하였지만 여기서 문제가 발생한다.

github는 commit 된 두 파일 중 무엇을 선택해 C에게 Pull해 줘야 하는지 갈등을 겪게 된다. 

 

해결 방법 첫번째

깃허브-리셋
리셋

 

 Git Repositories > 해당 협업 프로젝트 > Branches > Local> master 혹은 당사자의 브런치를 마우스로 우클릭 > Reset을 누른다.

 

깃허브-리셋-하드
리셋 하드

  Reset을 누르면 해당 그림과 같은 팝업이 뜬다. Hard를 선택 후 Finish 한다.

 

여기서 Reset은 해당 시점으로 돌아간다는 것을 의미한다. 

충돌이 일어나기 전 혹은 문제가 발생하기 전 상태로 돌아갔다면, 상대방의 업데이트된 파일을 pull 받는다.

 

깃허브-머지
머지하기

마지막으로 다시

Git Repositories > 해당 협업 프로젝트 > Branches >Remote Tracking에서 실패했던 pull list에 오른쪽 마우스를 클릭한 후

Merge를 클릭하면 해결된다.

해결방법 두번째

 

해결방법2-삭제
경로 삭제하기

 

자세히 보면 DIRTY_WORKTREE에 경로가 보인다. 저 경로에 들어가 해당 파일을 삭제하고 다시 가지고 온다.

삭제 후  실패했던 pull을 다시 merge하면 된다.

 

해결방법2-머지
머지하는 법

 

Git Repositoires > 해당 협업 프로젝트 > Branches >Remote Tracking에서 실패했던 pull list에 오른쪽 마우스를 클릭 한 후

Merge를 클릭하면 된다.

 

해결방법 세번째

 

깃허브-히스토리
히스토리 보기

 

Package Explorer에서 진행 중인 프로젝트를 우클릭 > Team > show in History를 클릭한다.

그러면 콘솔 옆에 아래와 같이 History 창이 열린다.

히스토리-리셋
히스토리 리셋

History에 들어가면 현재 프로젝트에서 지금까지 성공한 commit 내역이 나온다. 

이 중에서 돌아가고 싶은 시점을 우클릭한 후 >Reset > Hard를 클릭하면 그때의 시점으로 돌아간다.

그 후 충돌을 해결하고 다시 pull을 받으면 된다.

 

이렇게 history를 통해 Reset 하는 방법을 문제없이 사용하려면 평소 프로젝트에서 수정 혹은 업데이트 후 파일을 commit 할 때 commit message를 의미 있고 알아보기 쉽게 적어 놓아야한다.

 

개인적으로 DIRTY_WORKTREE 에러는 2번 > 3번  > 1번 순으로 에러를 해결한다. 두 번째가 제일 간단하고 성격과도 맞는 방법이기 때문이다. 앞으로도 많은 에러 해결 방법을 포스팅해보겠습니다~!

 

댓글