이 포스팅은 구름 에듀 강좌의 "Git으로 시작하는 협업 및 오픈소스 프로젝트" 를 기반으로 작성되었습니다.
이 강의의 강사이신 "나동빈" 님의 자료임을 밝힙니다.
상업적인 의도가 아닌, 공부한 것을 정리해놓는 목적의 포스팅입니다.
edu.goorm.io/learn/lecture/11528/git으로-시작하는-협업-및-오픈소스-프로젝트/info
@ Branch Conflict
일반적으로 두 개 이상의 브랜치에서 동일한 파일을 수정할 때,
그 내용이 다르면 merge를 할 때 충돌이 일어날 수 있다.
이러한 경우에는 충돌을 해결 한 후 성공적으로 병합이 일어나야 한다.
과정을 살펴보기 위해 develop 브랜치를 생성해준 후 이 브랜치를 가르키게 해보자.
이 상태에서 코드를 조금 수정해보도록 하자.
나는 기존에 있던 로컬 저장소 안에 test.py 를 수정해보겠다.
test.py 의 전 코드는 아래와 같다.
def add(a,b):
return a+b
def sub(a,b):
return a-b
def mul(a,b):
return a*b
수정 후의 코드는 아래와 같다.
def add(a,b):
return a+b
def sub(a,b):
return a-b
def mul(a,b):
return a*b
def div(a,b):
return a//b
코드를 수정 후 git add . 와 git commit을 해주었다.
git log를 확인해보자.
develop브랜치에 정상적으로 함수가 추가되었으며 마스터 브랜치에는 변동이 없는 것을 확인 할 수 있다.
여기서 브랜치를 마스터로 이동시켜준다.
그리고, 소스코드를 살짝만 추가해보도록 하자.
test.py 에 주석을 추가해보도록 하겠다.
def add(a,b):
return a+b
def sub(a,b):
return a-b
def mul(a,b):
return a*b
def div(a,b):
return a//b #comment
여기서 마스터 브랜치를 add 후 commit 해보고, log 를 살펴보자.
head가 마스터만을 가르키고 있다.
git checkout develop 명령어로 현재 가리키는 브랜치를 바꾸고 나서 깃 로그를 살펴보면,
이번에는 head가 develop만을 가르키고 있는 것을 볼 수 있다.
이것은 더 이상 두 브랜치가 같지 않다는 것을 의미한다.
이 상태에서 merge 를 해보도록 하자.
master 로 옮겨주고 merge 해보자.
충돌이 일어났다고 에러 메세지가 출력된다.
이제 내 test.py 를 보면, 자동으로 깃에서 소스코드가 다른 부분을 명시해주고 있다.
신기하다,,,
위의 주석이 써있는 부분은 master 브랜치의 코드, 아래는 develop 코드 모두를 보여주고 있다.
이때 우리는 서로 다른 두 코드 중에서 어떤 것을 사용할 지 수동적으로 결정할 수가 있다.
자신이 사용할 코드만 남기고 나머지를 모두 지운 후 저장해주자.
def add(a,b):
return a+b
def sub(a,b):
return a-b
def mul(a,b):
return a*b
def div(a,b):
return a//b #comment
다시 이 코드 상태로 돌아와서 저장한거다.
저장 후 이전에 실행했던 코드(add, commit, merge develop)를 그대로 실행 시켜 주면 이미 병합이 되었다고 출력된다.
로그를 살펴보면, 이미 마스터브랜치와 develop브랜치가 병합되어 한 화면에 같이 나오게 된다.
develop 은 할 일을 다 마쳤으니, 지워주도록 하자.
지워준 후 push명령을 통해 원격 저장소의 변경 내용을 적용시켜주면 된다.
성공적으로 병합된 브랜치 내용이 정상적으로 올라간 것을 확인할 수 있다.
'Archive > ETC' 카테고리의 다른 글
[ git & github ] Git 로그 | GitHub Log 관리 (0) | 2021.02.18 |
---|---|
[ git & github ] Git 원격 저장소(Remote Repository) 관리 (0) | 2021.02.18 |
[ git & github ] Git Branch 사용 | Git Branch 사용하기 (0) | 2021.02.18 |
[ git & github ] Git 에서 Commit 내역 수정하기 (0) | 2021.02.18 |
[ git & github ] Git 저장소에 코드 수정 반영하기 (0) | 2021.02.18 |