1. 병합

→ 특정 브랜치의 변경내역을 다른브랜치로 가져오는 것. 즉, 두 브랜치의 코드가 하나로 합쳐짐

 

1) 소스트리에서 브랜치 병합하기

master 브랜치에는 무조건 돌아가는 최종 코드만 커밋해야 하기 때문에 feature;a에 먼저 머지를 해보고 문제가 없다는 것을 검증해야 한다.

 

feature;a로 체크아웃한 후 master 우클릭에서 현재 브랜치로 master 병합을 클릭한다.

 

master에서 작업한 메인기능 2번기능 추가가 feature;a에 추가되어 있어야 한다.

 

해당 파일을 확인해보면 2번 기능 추가 내용이 잘 들어있는 것을 확인할 수 있다.

 

master를 체크아웃한 후 확인해보면 master 브랜치는 5번 커밋에 머물러 있기 때문에 feature;a에서 만든 a.txt는 확인할 수 없다.

 

master를 체크아웃한 상태에서 feature;a를 병합한다.

 

위와 같이 양쪽 브랜치가 동등해진 것을 확인할 수 있다. → 하나의 기능 개발이 완료된 것을 의미

 

2) CLI에서 브랜치 병합하기

기본적으로 master보다는 feature;a에 먼저 머지를 해야 하므로 feautre;a 브랜치로 체크아웃을 한다.

 

git merge 타겟브랜치명을 통해 병합을 할 수 있다.

 

위와 같은 화면이 나온다면 esc 키 누른 후 :q!를 입력해서 빠져나온다.

 

위와 같이 feature;a에 마스터에 추가된 내용을 끌고 온다.

 

위와 같이 feature;a 체크아웃 상태에서 gittest.txt 파일에 2번 기능이 추가되어 있는 것을 확인할 수 있다.

 

master 체크아웃 상태에서는 아직 머지를 하기 전이므로 a.txt 파일을 확인할 수 없다.

 

master 브랜치에서 feature;a를 merge 해준 후 확인해보면 위와 같이 잘 병합된 것을 확인할 수 있다.

 

 

2. 충돌 문제 해결하기

같은 파일에 대해 각 브랜치에서 새 브랜치를 생성한 이후 새롭게 같은 파일을 수정하고 병합하는 경우 충돌이 발생한다.

 

1) 소스트리에서 충돌 문제 해결하기

master로 체크아웃 한 후 gittest.txt에 3번 기능을 추가한 후 add, commit을 진행한다.

 

위와 같이 잘 커밋된 것을 확인할 수 있다.

 

feature;a로 체크아웃한 후 파일을 확인해보면 위와 같은 상태이다.

 

같은 위치에 위와 같은 내용 추가 후 add, commit 진행한다.

 

위와 같이 gittest.txt 3번 기능, 즉 동일한 지점에 두 브랜치에서 작업한 경우 merge를 진행하면 오류가 발생할 것이다.

 

이처럼 머지하려고 하면 master의 코드가 옳은지, feature;a의 코드가 옳은지 모호한 상황이 발생하기 때문에 충돌이 일어난다.

 

충돌난 파일을 더블클릭에서 연 후 위아래 코드를 적절하게 반영하고 다시 병합하면 충돌이 해결된다.

 

위 내용은 충돌 발생 시 자동으로 작성된다.

 

수정 후 다시 커밋해보면 위와 같이 병합이 잘 된 것을 확인할 수 있다.

 

2) CLI에서 충돌 문제 해결하기

먼저, feature;a 브랜치에서 gittest.txt 파일에 3번 기능을 추가한다.

 

add와 commit을 진행해준다.

 

마스터 브랜치로 체크아웃한 후 같은 지점에 3번 기능을 추가해준다.

 

add와 commit을 진행해준다.

 

feature;a 브랜치로 체크아웃 후 master와 병합하려고 하면 위와 같이 충돌 에러가 발생하는 것을 확인할 수 있다.

 

위와 같이 충돌난 파일을 열고 수정해준다.

 

다시 머지를 진행해보면 먼저 커밋을 하라는 메시지가 나온다.

 

add와 commit을 진행한 후 다시 merge를 해보면 위와 같이 이미 병합이 완료된 것을 확인할 수 있다.

'네트워크캠퍼스 > GIT, GITHUB' 카테고리의 다른 글

클론  (0) 2024.01.11
로컬 저장소 내역 깃허브 업로드  (0) 2024.01.10
브랜치  (0) 2024.01.04
커맨드라인을 활용한 깃  (0) 2024.01.03
소스트리를 활용한 깃  (0) 2024.01.02

+ Recent posts