Github과 협업 3

2016-10-06

CONFLICT 해결

$ git fetch upstream
[...]
   39e6f5d..371478b  master     -> upstream/master
$ git merge upstream/master
Auto-merging kboard/kboard/urls.py
CONFLICT (content): Merge conflict in kboard/kboard/urls.py
Auto-merging kboard/functional_test.py
CONFLICT (content): Merge conflict in kboard/functional_test.py
Auto-merging kboard/board/views.py
CONFLICT (add/add): Merge conflict in kboard/board/views.py
Auto-merging kboard/board/templates/post_list.html
CONFLICT (add/add): Merge conflict in kboard/board/templates/post_list.html
Automatic merge failed; fix conflicts and then commit the result.

    conflict난 파일이 4개가 있다. 먼저 kboard/kboard/urls.py를 보자. tree     conflict난 파일을 열어보면 이렇게 되어있다. HEAD와 아까 fetch받은것을 비교해서 보여준다. 꼭 최신것으로 할 필요는 없고 취사선택하면 된다.

  • <<<<<<< HEAD: 여기 아래로는 현재 브랜치에 있는 코드
  • =======: 구분선
  • >>>>>>> upstream/master: 합치려는 다른 브랜치의 코드(여기서는 upstream/master)

    <<<<<<< HEAD, =======, >>>>>>> upstream/master, 지울코드를 지워주고 저장하면 된다.

<<<<<<< HEAD
[...]
=======
[...]
>>>>>>> upstream/master

    여기까지 하고 이대로 merge를 시도하면 안된다. 시키는대로 해보자.

$ git merge upstream/master
error: Merging is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

    수정 된 파일들을 add만 하고 merge를 시도하면 아래와 같은 문제가 생긴다.

$ git merge upstream/master
fatal: You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you merge.

    commit까지 해야된다고 친절하게 알려준다. 끝!

$ git commit -m "conflict resolve"
[develop c7ac4a5] conflict resolve