egit을 활용해 브랜치 merge 충돌을 해결하는 방법은?

2013-01-07 17:29

eclipse를 활용해 git을 사용하는 경우 다음과 같은 방법으로 merge 할 수 있다.

브랜치 구조가 다음과 같다.

현재 브랜치는 feature/sync-facebook-comment 이다. 이 브랜치에 develop 브랜치의 변경사항을 merge 하려고 한다.

git merge develop

위 명령을 실행해 merge한 결과는 다음과 같다.

총 3개 소스에서 충돌이 발생했다.

eclipse에서 확인해 보면 충돌이 발생한 소스에 다음과 같이 붉은색으로 충돌이 발생한 것을 확인할 수 있다.

충돌이 발생한 소스 코드를 열어 이슈를 해결한다. 충돌 소스는 다음과 같다.

HEAD 영역이 현재 브랜치인 feature/sync-facebook-comment 소스이도 develop 영역이 develop 브랜치 영역이다. 3개의 소스 코드를 수동으로 충돌을 해결한다.

모든 충돌을 해결한 후 "git status"를 확인하면 다음과 같이 충돌이 발생한 소스 코드를 추가하라는 명령을 확인할 수 있다.

"git add ."를 실행해 3개의 소스 코드를 add한다. add가 완료되면 충돌이 모두 해결된 상태가 되고 commit 가능한 상태가 된다. 이후는 일반적인 git flow와 동일하다. 소스 코드를 commit하고 push하면 된다.

충돌이 발생한 부분이 복잡한 경우 mergetool을 활용해 merge할 수 있다.

7개의 의견 from SLiPP

2013-01-07 17:58

@changhwa.oh 제가 git checkout 기능은 사용해 보지 않아서요. --ours 옵션이나 --theirs 옵션 기능에 대해서 간단하게 설명해 주실 수 있을까요?

저도 오늘 처음으로 merge 작업하다가 위 방법으로 진행해서 공유해봤습니다.

2013-01-07 18:03

@자바지기 --ours 옵션은 현재 파일로 충돌을 처리하고 --theirs 옵션은 머지해오는 파일로 충돌을 처리합니다.

git checkout --ours 충돌나는파일

이런형태로 사용하곤합니다.. git 처음 사용했을때 계속 충돌나서 이런식으로 해결을 하곤 하였습니다.

2013-01-07 18:18

가능하면 Merge는... Kdiff3 나 meld, p4merge 같은거 쓰시는게 좋아요.

전용도구를 사용하시면 정신 건강에 좋습니다. :)

http://www.gitguys.com/topics/merging-with-a-gui/

http://jeroen.haegebaert.com/post/2008/08/26/Resolving-merge-conflicts-with-git-and-kdiff3

http://naleid.com/blog/2012/01/12/how-to-use-kdiff3-as-a-3-way-merge-tool-with-mercurial-git-and-tower-app/

정도 참고하시면 편안하게 Merge 하실 수 있으실 꺼에요~~~

2013-01-07 21:12

@Kenny 알았다. merge tool 사용하도록 연습해볼께. 근데 내가 윈도우즈에서 개발하고 있는데 위 merge tool이 윈도우즈 지원하남? 지원하지 않는 담 윈도우즈에서 유용하게 쓸 수 있는 도구 추천해 줌 고맙고..

@hyukhur 내가 merge와 rebase의 차이점을 잘 모르고 있다. 과거에 git 처음 공부했을 때는 이해한 듯한데 시간이 지나니까 또 까먹게 된다. 자주 사용해야 잊어버리지 않을텐데 말이야. 이번 기회에 다시 함 공부해야겠다.

2013-01-08 11:22

@자바지기 넵. 윈도우즈 다 지원 합니다. 윈도우에서는 P4Merge 쪽이 제일 좋긴 한데, 이게 라이센스가 좀 에메해서요. 저야 돈 주고 사서 쓸 수 있는건 사고, 아닌건 전부 오픈소스로 하다 보니, KDiff3 쪽을 선호 합니다. 이 녀석은 Cross Platform QT로 짠 거라, 안 이쁜게 문제지 OS 상관 없이 쓰실 수 있어요.

의견 추가하기

연관태그

← 목록으로