일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 아파치톰캣
- 인스턴스
- DML
- Linux_명령어정리
- asp.net
- 자바
- Git_명령어정리
- 자바스크립트
- 배열
- vb.net
- SQL_용어정리
- MySQL
- jsp
- 인덱스
- github
- CSS
- Git_정리
- java
- spring
- Linux
- 다이어그램
- Spring_에러정리
- HTML
- SQL
- json
- Spring_오류정리
- JavaScript
- git
- 이클립스
- workbench
- Today
- Total
데브마우스
[Git] 브랜치 병합 정리 본문
Git 브랜치를 병합(merge)할 때 주의할 점
Git 브랜치를 병합 하기 전에는 main 혹은 master 브랜치에서 병합해야합니다.
git switch [main|master]
git merge [병합할_브랜치_이름]
브랜치(분기) 시각화 자료 | ||||||
main | ||||||
│ | ||||||
work1 | ─ | 분기 | → | main work2 |
||
↘ | ||||||
└ | → | test2 work2 |
||||
│ | ||||||
test2 | ─ | 2. test2가 test2 work2 커밋을 가리킴 | ||||
│ | ||||||
HEAD | ─ | 1. HEAD가 test2 브랜치를 가리킴 |
Fast-forward 병합이란 무엇인가요?
main 브랜치에서 브랜치 분기 후 main 브랜치에 아무 변화가 없다면 분기 후 브랜치를 병합하는 것은 간단합니다. 자동으로 병합되며 터미널에 Fast-forward가 출력됩니다.
다른 브랜치에서 한 문서의 다른 부분을 수정했을 때 병합하는 방법 정리
브랜치 시작점 | 브랜치 | 파일 내용 | |
work1 | ─ | work2 | #title content main content 2 #title content |
↓ | |||
→ | work2 o2 <- HEAD |
#title content #title content o2 content 2 |
위와 같은 상황일 때 병합(merge)를 시도하면 각자의 브랜치 모두 서로 다른 부분만 수정하였기에 문제없이 병합(merge)이 잘 이루어지는걸 확인하실 수 있습니다.
서로 다른 브랜치에서 한 문서의 같은 부분을 수정했을 때 병합하기
한 문서의 같은 부분을 수정하면 충돌(Conflict)이 발생하며 아래와 같은 경고가 콘솔창에 출력합니다.Auto-merging work.txt
CONFLICT (content): Merge conflict in work.txt
Automatic merge failed; fix conflicts and then commit the result.----------충돌이 발생한 파일입니다.----------
#title
content
<<<<<<< HEAD
main content 2 main의 내용입니다.
======= 구분선입니다.
o2 content 2 o2의 내용입니다.
>>>>>>> o2
#title
content
----------<<<<<<<와 ======= 사이의 내용은 현재 브랜치(main)를 의미합니다.========와 >>>>>> 사이의 내용은 다른 브랜치(o2)를 의미합니다.
git은 충돌이 발생하였을 때 병합의 기준을 가지고 있지 않기 때문에 개발자가 직접 파일을 수정하신 후 commit 명령어로 commit 하셔야합니다.
병합 및 충돌 해결 프로그램
병합 및 충돌을 자동으로 처리해주는 프로그램은 아래와 같습니다. 아래 프로그램 외에도 다양한 프로그램이 있습니다.
- P4Merge
- meld
- Kdiff3
- Araxis Merge
병합이 끝난 후 브랜치 삭제하는 방법
git branch -d [브랜치 이름]
git branch -D [브랜치 이름]
git branch -d와 -D모두 브랜치를 삭제하지만 -d는 병합이 끝난 브랜치만 삭제하며 -D는 병합이 끝나지 않은 브랜치도 삭제할 수 있다는 특징이 있습니다.
단 브랜치를 삭제한다고 해도 숨기는 것에 지나지 않습니다. 삭제한 브랜치와 같은 이름으로 브랜치를 생성하면 이전에 작업 내용이 그대로 나타납니다.
Cherry-pick으로 병합하는 방법
cherry-pic은 main 브랜치와 다른 브랜치를 병합하지만 브랜치 전체를 합치는게 아니라, 다른 브랜치의 특정 버전의 변경 내용만 합치려고할 때 사용하는, 부분 병합 기능을 제공합니다.
'Git > Git: 정리' 카테고리의 다른 글
[Git] fetch로 원격 브랜치(Github)에서 정보 가져오는 법, Github에서 협업 하는 방법 (0) | 2024.01.11 |
---|---|
[Git] Git Hub 정리 (0) | 2024.01.10 |
[Git] 브랜치 개요 및 생성방법 정리 (0) | 2024.01.10 |
[Git] tracked 그리고 untracked, unmodified, modified, stage 상태 정리 (0) | 2024.01.09 |
[Git] 작업 트리에서 파일 수정하는 방법 정리 (0) | 2024.01.09 |