프로그래밍/devops

git conflict 해결 - 명령어와 github UI

브래드 킴 2023. 1. 29. 21:55
728x90

merge conflit 해결 - 명령어

현재 checkout된 dev브랜치에서 feature브랜치인 dev1브랜치를 merge시킨다고 하자.

git merge dev1


dev브랜치와 dev1브랜치가 각 각 dev.txt라는 파일을 같은 라인을 다르게 수정했다. 이때에는 충돌이 발생한다.
(만약 dev와 dev1dl 각각 dev.txt파일의 다른 라인에서 다른 내용을 수정했다면 이는 충돌이 발생하지는 않는다. 이때에는 git이 적절하게 merge를 시키기 때문이다.)

Auto-merging dev.txt
CONFLICT (content): Merge conflict in dev.txt
Automatic merge failed; fix conflicts and then commit the result.

충돌발생시, git이 충돌이 발생한 파일명을 알려줬고 수정하라고 알려준다. 이때에는 파일을 열어서 충돌을 해결하고 commit을 해야 dev1의 commit에 더해 merge커밋이 생성된다.

vi를 통해 dev.txt파일을 열어 보면 아래와 같이 수정사항을 표시해주고 알려준다. ====가 두 충돌을 구분짓는 선이고, HEAD아래 부분이 현재 checkout된 dev의 상황이고, dev1의 윗부분이 dev1의 수정사항이다.



<<<head, =====, >>> dev1 이 부분들은 불필요한 부분이니 지워버리고, 최종적으로 남기고 싶은 부분만 잘 정리하여 저장하면 되겠다. 수정 후에 저장을 하고, commit을 하게 되면 새로운 수정 후 merge commit이 만들어지게 될 것이다.

github UI상에서 merge를 할때에도 해결 방법은 똑같다.

merge conflit 해결 - github UI

branch라는 feature브랜치에서 main으로 Pull Request를 올리면, 아래와 같이 can't automatically merge 라는 문구가 뜬다. 이때에 일단 create pull request를 하자.


그러면 당장에는 merge가 불가능하므로, 아래의 resolve conflicts에 들어가서,


아래의 내용을 적절히 수정한 후에 mark as resolved 버튼을 누르고 commit merge 버튼을 누르자 된다.


그러면, 아래와 같이 merge가 가능한 UI로 바뀌어 있음을 알수가 있을 것이다.

728x90