일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 카카오프로젝트 100
- 보안뉴스 한줄요약
- python
- numpy
- 자바스크립트 객체
- 자바스크립트 기본 문법
- 자바스크립트 jQuery
- GIT
- php
- 카카오프로젝트100
- Oracle SQL
- 보안뉴스요약
- 자바스크립트 prototype
- oracle
- ES6
- 카카오프로젝트
- 자바스크립트 element api
- 랜섬웨어
- 자바스크립트 API
- 파이썬
- oracle db
- 오라클
- 깃허브
- javascript
- 자바스크립트 node
- 자바스크립트
- 보안뉴스 요약
- 보안뉴스
- 다크웹
- 보안뉴스한줄요약
- Today
- Total
FU11M00N
[ git & github ] Git Branch 충돌(Conflict) 처리하기 본문

이 포스팅은 구름 에듀 강좌 나동빈 선생님 강의 "Git으로 시작하는 협업 및 오픈소스 프로젝트" 를 기반으로 작성되었습니다.
edu.goorm.io/learn/lecture/11528/git으로-시작하는-협업-및-오픈소스-프로젝트/info
구름EDU - 모두를 위한 맞춤형 IT교육
구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/
edu.goorm.io
- Branch Conflict
일반적으로 두 개 이상의 브랜치에서 동일한 파일을 수정할 때,
그 내용이 다르면 merge를 할 때 충돌이 일어날 수 있습니다.
이러한 경우에는 충돌을 해결한 후 성공적으로 병합이 일어나야 합니다.
과정을 살펴보기 위해 develop 브랜치를 생성해준 후 이 브랜치를 가리키게 해 보겠습니다.

이 상태에서 코드를 수정하겠습니다.
저는 기존에 있던 로컬 저장소 안에 test.py를 수정해보겠습니다.
def add(a,b):
return a+b
def sub(a,b):
return a-b
def mul(a,b):
return a*b
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
수정 후의 코드는 위와 같습니다.
.

코드를 수정 후 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" 브렌치는 할 일을 다 마쳤으니, 지우겠습니다.

git branch -d "브렌치 이름" 지워준 후 push 명령을 통해 원격 저장소의 변경 내용을 적용시켜주면 됩니다.

성공적으로 병합된 브랜치 내용이 정상적으로 올라간 것을 확인할 수 있습니다.
'Git' 카테고리의 다른 글
[ git & github ] Git 로그 | GitHub Log 관리 (0) | 2021.02.18 |
---|---|
[ git & github ] Git 원격 저장소(Remote Repository) 관리 하기 (0) | 2021.02.18 |
[ git & github ] Git Branch 동작과정 및 사용하기 (0) | 2021.02.18 |
[ git & github ] Git Commit 내역 수정하기. (0) | 2021.02.18 |
[ git & github ] Git 저장소에 코드 수정 반영 (0) | 2021.02.18 |