git - conflict(충돌) 처리법

jomminii_before·2020년 2월 12일
16

git 에서 masterbranch를 만들고 작업을 하다보면, pull request 할 때 conflict(충돌)가 나는 경우가 있습니다. 이런 경우는 내가 pull origin master를 한 후에 다른 작업자가 저와 같은 라인을 수정하고, 그 수정한 내역을 master 와 합쳤을때(merge) 발생합니다.

이렇게 되면 충돌된 코드를 수정해줘야 pull request를 성공적으로 할 수 있습니다.

해결방법은 이렇습니다.

먼저 git checkout mastermaster 브랜치로 이동합니다. 그리고 git pull origin master를 해서 최신 업데이트된 리모트 저장소의 master 브랜치를 나의 로컬 master에 엎어줍니다.

(feature/DDANGDAMUKGI) $ git checkout master           # master 브랜치로 이동
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

(master) $ git pull origin master		       # 리모트 저장소의 최신 master 브랜치를 내 로컬 master에 덮어씌움
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 8 (delta 4), reused 7 (delta 4), pack-reused 0
Unpacking objects: 100% (8/8), done.
From https://github.com/wecode-bootcamp-korea/git2
 * branch            master     -> FETCH_HEAD
   0349c06..0c73d2d  master     -> origin/master
Updating 0349c06..0c73d2d
Fast-forward
 README.md       | 5 +++++
 yongjunleeme.md | 2 ++
 2 files changed, 7 insertions(+)
 create mode 100644 yongjunleeme.md

그리고 나서 git checkout을 통해 충돌났던 브랜치로 이동하고, 이 브랜치와 최신버전의 로컬 master 브랜치를 merge 해줍니다. 명령어는 git merge master 입니다. 이 과정을 거치면, pull request를 했을 때 충돌이 났던 상황이 재연됩니다. 다른 작업자가 수정해놓은 최신버전과 현재 내가 수정한 branch가 충돌하는거죠.

이렇게 충돌된 파일이 확인되면, 편집창에 들어가 해당 파일을 수정하면 됩니다.

 
(master) $ git checkout feature/DDANGDAMUKGI             # 내 작업 브랜치로 이동
Switched to branch 'feature/DDANGDAMUKGI'

(feature/DDANGDAMUKGI) $ git merge master                # 최신으로 업데이트 된 master 브랜치를 내 작업 브랜치와 merge
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md          # 충돌된 파일 이름은 README.md
Automatic merge failed; fix conflicts and then commit the result.

수정 상황을 따로 캡쳐를 못해서 구글에서 이미지를 하나 퍼왔습니다. 충돌 파일을 수정하러 들어가면, 충돌된 파일이 합쳐져있고, A~C 같은 표식이 자동으로 생성되어있습니다. 이런 표식들은 그대로 저장되니 모두 지워줘야하고요, 현재 파일에서 남기고 싶은 부분만 남긴 다음 저장하면 됩니다.
confluence.atlassian.capture
그리고 나서 다시 git add, commit, push, pull request를 하면 해결됩니다.

만약 해결을 다해서 pull request를 하기 전에 다른 사람이 올린게 새로 업데이트되서 master가 변경된다면 다시 충돌이 날 수 있으니 주의하세요!

profile
https://velog.io/@jomminii 로 이동했습니다.

1개의 댓글

항상 감사합니다 ㅠㅠ

답글 달기