1. 학교 교과과정의 텀 프로젝트와 같이 소규모 프로젝트 진행이 목적이라면 Github 보다는 Bitbucket.org 를 권합니다. Github 는 public 으로 공개하는 프로젝트만이 무료인 데 반해, Bitbucket 은 private 으로 감출(?) 수 있는 프로젝트가 무료이기 때문입니다. 프로젝트를 공개하여 많은 사람들과 함께 진행하고 싶다면 Github 가, 개인적인 용도로 프로젝트를 진행하고 싶다면 Bitbucket 가 알맞습니다.


2. EGit 을 설치할 때, 무엇을 설치할 지 모르겠다면 아래 두 개만 체크해도 됩니다.



3. egit 설치 후, 프로젝트 내의 파일에 달려 있는 심볼(아이콘 표시)들의 의미는 EGit/User Guide/State 페이지의 "Icon Decorations" 를 참고 해 주세요.


4. egit 에서 commit 시에 conflict 가 발생 한다면, 아래 6단계로 해결 할 수 있습니다. 팀원들이 하나의 branch(master) 에서 작업을 진행하고 push 하는 상황을 가정 했으며, EGit/User Guide - Resolving a merge conflict 페이지를 참고 하여 작성 하였습니다.


① (평소처럼) 프로젝트 우클릭 > Team > Commit > Commit and Push 를 했을 때, 난데없이

  [rejected - non-fast-forward]

  가 발생했다면? 여러분의 팀원이 여러분 모르는 사이에 commit 을 해서 원격 저장소(remote repository)로 push 한 상황입니다. 해당 원격 저장소를 새로운 경로로 clone 해 보세요. 여러분이 작업 하고 있는 로컬 저장소에는 보이지 않는 commit 이 보일 것입니다.


② 프로젝트 우클릿 > Team > Pull

→ Fetch Result : 서버의 commit 내역

   Update Result :

      - Result Conflicting

      - Merge input : Local 의 마지막 commit VS 서버의 마지막 commit


③ Conflict 가 발생하는 파일 우클릭 > Team > Merge Tool > Use HEAD



붉은 상자로 표시한 Copy Current Change from Right to Left, Next Difference 버튼을 이용하여 파일을 수정 합니다. 이 버튼을 누르면 오른쪽 파일의 수정사항을 왼쪽 파일에 적용 하게 됩니다. 오른쪽 파일은 원격 저장소, 왼쪽 파일은 로컬 저장소이므로 결국 팀원이 원격 저장소로 push 한 내용을 내가 작업 하는 로컬 저장소에 반영 한다는 의미입니다.


④ 저장 합니다.


⑤ 수정한 파일(Conflict 가 발생했던 파일) 우클릭 > Team > Add to Index


⑥ 프로젝트 우클릭 > Team > Commit > Commit and Push


이상 6단계를 거칩니다. 상대방의 수정사항을 정확히 알지 못하면 Push 시에 발생 하는 Conflict 를 해결 하기 어렵습니다. Conflict 를 해소 하려고 하는데 뭔가 더 꼬여가는 것 같다면 과감히 전화찬스를 쓰도록 합시다.

"여보게 동지, 대체 무엇을 고쳤는가?"

현업에서도 종종 일어나는 일입니다^^;;


포스팅이 도움이 되었기를, 그리고 처음 접하는 git 이 낯설어서 고생하는 일이 없기를 바랍니다!


  1. 조중협 2015.05.27 15:17
    감사합니다. git을 배우고 있는 초보입니다만.. 필요한 정보를 정말 깔끔하게 정리해 주셨네요.
    • BlogIcon FelixDies 2016.02.07 11:58 신고
      도움이 되었다니 기쁘네요. 방문 해 주셔서 감사합니다^^