Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

F. Conflict resolve & pull

Conflict, Merge in Gerrit

  • 이번엔, 하나의 프로젝트를 두 명의 개발자가 같이 개발하고 있는 상황에서, conflict가 났을 때 리뷰어가 직접 conflict을 수정하여 merge하는 상황을 실습해보겠습니다.
  • 3명의 역할을 가정하기 때문에 다소 정신이 없습니다. 알고 보면 간단한데, 어려워 보일 수 있으니 유심히 봐주세요.
  • 새로 프로젝트를 만들어 클론하고, 이를 3개로 복사해서 각각 dev1, dev2, reviewer 3개의 workspace를 만들겠습니다.

...

  • C001, C002 커밋이 All → Open을 보면 잘 올라와 있습니다.
  • 일단 C002 커밋을 눌러서 자세히 보겠습니다. C001과 Conflict이 나고 있다고 gerrit이 알려주는 군요.
  • gerrit이 뭐라고 하던, 일단 C002 커밋을 review 를 통과시켜보겠습니다. merged에 C002 커밋이 잘 들어가 있는 것을 볼 수 있습니다.

 

  • 이제 다시 C001 commit으로 돌아와 보니, Cannot Merge라고 떠있군요. 이 상황을 해결하지 못하면 해당 커밋을 merge할 수가 없습니다.
  • 여러 경우가 있겠지만, 여기서는 review가 merge된 C002와 review중인 C001을 둘 다 받아와서, conflict를 해결하고, 다시 review push 하여, conflict를 해결해보겠습니다.

...

  • 만약 git pull 하는 과정에서 Conflict이 다시 발생하면,  git log로 커밋 History 확인 후 git reset --hard HEAD~1 으로 최신 커밋을 삭제한 후, 다시 git pull을 수행합니다.