생활코딩

Coding Everybody

코스 전체목록

닫기

branch 병합 시 충돌해결

수업내용

여기서는 branch를 병합 할 때 git이 자동으로 처리해주는 소중한 작업이 무엇인가를 소개하고, 자동으로 병합할 수 없는 경우에는 어떻게 이를 수동으로 처리해야 하는지를 소개해드립니다. 

수업

수업내용

충돌이 일어났을 때 

충돌이 생기면 아래와 같은 메시지가 뜹니다. 

git status를 하면 충돌이 일어난 파일을 찾을 수 있습니다. 

 충돌이 발생한 파일을 수정합니다. 아래와 같습니다. 

'<<<<<<< HEAD' 부터 '=======' 사이의 구간이 현재 체크 아웃된 파일의 내용이고 '=======' 부터 '>>>>>>> exp' 사시의 구간이 병합하려는 대상인 exp 브랜치의 코드 내용입니다.  이 정보를 참고로해서 두개의 코드를 병합한 후에 특수기호들을 제거해주시면 됩니다. 작업이 끝나면 파일을 저장.

충돌 작업을 끝냈다는 것을 깃에게 알려줍니다. 

git add 'conflicted file name'

 

댓글

댓글 본문
작성자
비밀번호
  1. groundntree
    * 브랜치 만들기
    git branch -b exp
    git branch

    << 충돌이 발생하지 않는 경우의 병합 실습 >>

    1. 서로 다른 파일을 작업하는 경우
    * master 브랜치에서 master.txt 생성후 커밋
    git checkout master
    vim master.txt
    git add master.txt
    git commit -m "6"

    * exp 브랜치에서 exp.txt 생성후 커밋
    git checkout exp
    vim exp.txt
    git add exp.txt
    git commit -m "7"

    * 병합
    git checkout master
    git merge exp
    git log --branches --graph --decorate
    ls -al

    2. 같은 파일의 다른 부분을 추가할 경우

    * exp 브랜치에서 common.txt 에 function a() {} 를 만드세요.
    git checkout exp
    vim common.txt
    git add common.txt
    git commit -m "8"

    * master 브랜치에서 common.txt 에 function b() {} 를 만드세요.
    git checkout master
    git merge exp
    ls -al
    vim common.txt
    git commit -am '9'

    * exp 브랜치에서 common.txt 에 function c() {} 를 만드세요.
    git checkout exp
    vim common.txt
    git commit -am "10"

    * master 브랜치에서 exp 브랜치를 병합합니다.
    git checkout master
    git merge exp
    ls -al
    vim common.txt
    cat common.txt

    * exp 브랜치에서 master 브랜치를 병합합니다.
    git checkout exp
    cat common.txt
    git merge master
    cat common.txt

    << 충돌이 발생할 경우의 실습 >>

    * master 브랜치에서 common.txt 의 function b(master)로 수정 후 커밋
    git checkout master
    vim common.txt
    git commit -am '11'

    * exp 브랜치에서 common.txt 의 function b(exp)로 수정 후 커밋
    git checkout exp
    vim common.txt
    git commit -am '12'

    * master 브랜치에서 exp 브랜치를 병합하면 충돌이 발생합니다.
    git checkout master
    git merge exp
    git status

    * 충돌이 발생한 파일을 다시 수정하여 커밋합니다.
    vim common.txt
    git add common.txt
    git status
    git commit
    git log
    cat common.txt
  2. seulcode
    항상 좋은 수업 감사드립니다. 깃의 세계에 빠져들고 있네요...

    아래쪽 텍스트 에서 >>>>exp' 사시의 -> 사이의 오타인것 같습니다!
    항상 감사드립니다 이고잉님... 나중에 저도 오픈소스로 보은하겠습니다.
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기