출처: https://backlog.com/git-tutorial/kr/stepup/stepup2_7.html
1. 'issue2' 브랜치에서 변경한 부분과 'issue3' 브랜치에서 변경한 부분을 모두 'master' 브랜치에 통합해보기
먼저 'master' 브랜치를 체크아웃한 다음 'issue2' 브랜치를 병합.
$ git checkout master
Switched to branch 'master'
$ git merge issue2
Updating b2b23c4..8f7aa27
Fast-forward
myfile.txt | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
'fast-forward(빨리감기) 병합'이 실행됨. master' 브랜치에 'issue2' 브랜치가 병합된 것.
2. 'issue3' 브랜치를 병합(같은파일 수정해서 충돌이 예상됨)
$ git merge issue3
Auto-merging myfile.txt
CONFLICT (content): Merge conflict in myfile.txt
Automatic merge failed; fix conflicts and then commit the result.
'CONFLICT(충돌)'이라 나오는 것을 보니 자동 병합에 실패했음.
앞서 각각의 브랜치에서 변경한 내용이 myfile.txt 의 같은 행에 포함되어 있기 때문.
<<<<<<< HEAD
commit: 인덱스의 상태를 기록하기
=======
pull: 원격 저장소의 내용을 가져오기
>>>>>>> issue3
충돌이 있는 부분에 Git 이 자동으로 위와 같이 충돌 정보를 포함하여 파일 내용을 변경해야함.
어떤 브랜치에서 어떤 부분이 충돌되었는지 확인할 수 있다. 충돌이 일어난 부분은 이렇게 일일이 확인해서 수정해 주어야한다.
충돌 부분을 모두 수정했으므로, 다시 커밋
$ git add myfile.txt
$ git commit -m "issue3 브랜치 병합"
# On branch master
nothing to commit (working directory clean)
이번 병합은 충돌 부분을 수정했기 때문에 그 변화를 기록하는 병합 커밋이 새로 생성 되었다.
그리고 'master' 브랜치의 시작('HEAD')이 그 위치로 이동해 있는 것을 확인할 수 있음.
아래와 같은 방식을 'non fast-forward 병합'이라고 함.
'git' 카테고리의 다른 글
원격 브런치 삭제하기 (0) | 2021.12.14 |
---|---|
SourceTree 용어 (0) | 2021.05.07 |
[소스트리] Rebase(재배치) / Enable Force push(강제 푸쉬) 사용 (0) | 2021.03.02 |
git branch (step3. rebase 로 병합) (0) | 2021.02.26 |
git branch 기본 명령어 (step1. 시작) (0) | 2021.02.26 |