각각의 개발자마다 독립적인 저장소 branch
에서 작업이 끝나서 하나의 branch
로
병합하려고 합니다. branch
들을 병합시켜주는 명령어에 대해서 알아보겠습니다.
나뉘어진 브랜치들의 공통적인 부모 브랜치를 base
라고 합니다.
branch
를 병합하는 명령어branch
들은 새로운 커밋으로 저장 됩니다git merge [브랜치 명]
# 명령어를 사용하는 브랜치에서, merge에 해당하는 브랜치를 병합 합니다.
# 현재 브랜치의 위치가 main 이라면, 브랜치명에 해당되는 branch를 병합하여 main branch에 커밋 합니다.
git merge --squash [브랜치 명]
# 한 브랜치의 이력(저장소)을 압축하여 다른 브랜치의 최신 커밋 하나로 만드는 방법
git merge cherry--pick [커밋명]
# 다른 브랜치에서 하나의 커밋만을 가져와 현재 브랜치에 적용 한다.
서로 다른 파일을 갖고 있는 브랜치들을 병합하는 방법을 알아보겠습니다.
병합된 브랜치는 서로 다른 브랜치들의 모든 파일을 저장 합니다.
1. 작업환경 구성
1.1 메인(master) 브랜치에서 1개의 파일을 생성 후 커밋하고, 새로운 브랜치를 생성
1.2 브랜치가 만들어지고 나면, 새로운 1개의 파일을 다시 생성
( 모든 작업은 main 브랜치에서 진행 )
2. 생성한 브랜치로 이동 후 파일 생성
3. 브랜치간의 병합, 생성된 o2
브랜치를 main
브랜치로 병합
번외. 서로 다른 브랜치에서 commit
을 하다보면, 어떤 브랜치에서 commit
했는지 착각할
수 있습니다. 아래 이미지를 확인 해보면, git log
명령어를 사용하면 각자의 브랜치에서
커밋한 기록들은, 따로 구분되어 표시되는 것을 볼 수 있기 때문에 여러 브랜치를 사용하는
저장소라면 git log
에 --graph
기능을 사용하세요.
위 이미지는 예제와는 상관없습니다. 브랜치를 이해하기 위해서 여러 시행착오를 거친 이미지에요.
서로 다른 브랜치에서 같은 파일의 내용을 다르게 수정하고, 수정한 부분의 파일을 병합하는
방법을 진행 해보겠습니다.
1. 예제 진행전에, 이전에 했던 저장소를 초기화 해주세요. ( git init )
main
브랜치에서 하나의 파일을 생성 후, 브랜치 1개를 생성 합니다.
2. 생성된 브랜치와 main
브랜치에 있는 동일한 파일에서 서로 다른 부분을 수정
3. 결과 확인
git
은 파일을 병합할 때 같은 파일의 같은 부분을 수정하면 충돌합니다.
이러한 오류를 conflict
라고 합니다. 오류가 발생했을 때 대처 방법을 살펴보겠습니다.
1. 서로 다른 브랜치에서 같은 파일안에 같은 부분을 수정 합니다.
2. main
브랜치에서 o2
브랜치를 병합합니다.
3. 충돌 해결
사진에는 없는데, git add .
이후에 git commit
을 진행 했습니다