일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 자바스크립트 jQuery
- 카카오프로젝트 100
- 파이썬
- 보안뉴스
- 깃허브
- numpy
- oracle
- 카카오프로젝트100
- python
- 오라클
- 자바스크립트
- 보안뉴스 한줄요약
- oracle db
- 보안뉴스 요약
- Oracle SQL
- php
- 자바스크립트 기본 문법
- 카카오프로젝트
- 랜섬웨어
- 보안뉴스한줄요약
- ES6
- 자바스크립트 API
- 보안뉴스요약
- 자바스크립트 객체
- 자바스크립트 prototype
- 자바스크립트 node
- GIT
- 자바스크립트 element api
- 다크웹
- javascript
- Today
- Total
FU11M00N
[ git & github ] Git Branch 충돌(Conflict) 처리하기 본문
이 포스팅은 구름 에듀 강좌 나동빈 선생님 강의 "Git으로 시작하는 협업 및 오픈소스 프로젝트" 를 기반으로 작성되었습니다.
edu.goorm.io/learn/lecture/11528/git으로-시작하는-협업-및-오픈소스-프로젝트/info
- 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 |