* 로컬에서 브랜치 병합하는 방법
main 브랜치에서 test 파일을 생성하고 a_ 라는 코드를 추가한다. 해당 변경이력은 로컬저장소에 커밋한다. modal 브랜치를 생성하고, 해당 브랜치로 이동한다. 여기서 기존의 test 파일에는 c_코드를 두번째 줄에 추가하고, new 라는 새로운 파일에는 b_ 코드를 추가한다. 그 다음 해당 변경이력을 마찬가지로 로컬저장소에 커밋한다.
브랜치를 병합하려면 main 브랜치로 먼저 이동한다. 여기서 git merge [통합하려는 브랜치명] 을 실행하여 특정 브랜치의 변경이력을 main 브랜치에 통합한다. 이때 main 브랜치의 a_ 코드와 modal 브랜치의 a_ 코드가 동일하면 성공적으로 병합이 이루어지며, main 브랜치는 그저 modal 브랜치의 변경이력을 그대로 반영한 것이기 때문에 이를 빨리감기(Fast-forward) 병합이라고 한다. 만약 두 브랜치의 a_ 코드가 다르면, 병합시 충돌이 발생하게 된다.
* 로컬에서 브랜치 병합시 충돌상황 이해하기
main 브랜치에 파일을 생성하고 a_ 라는 코드를 추가한 다음 커밋한다. alarm 브랜치를 생성하고 해당 브랜치로 이동한다. 해당 브랜치에서 기존 파일에 b_ 코드를 추가한 다음 다시 커밋을 진행한다. main 브랜치로 다시 이동한다. 이제 header 브랜치를 생성하고 해당 브랜치로 이동한다. 기존 파일에 c_ 코드를 추가하고 커밋한다.
병합을 위하여 main 브랜치로 다시 이동한다. 먼저 alarm 브랜치를 병합한다. 그럼 main 브랜치에는 a_, b_ 코드가 존재한다. 그 다음 header 브랜치 병합을 시도한다. 이때 상황에 따라 아래 두가지로 나뉜다.
첫번째, 병합된 main 브랜치의 a_ 코드와 header 브랜치의 a_ 코드가 동일한 경우 위와 같이 성공적으로 병합이 이루어진다.
두번째, 병합된 main 브랜치의 a_ 코드와 header 브랜치의 a_ 코드가 다른 경우 위와 같이 병합중 충돌이 발생한다. 이때는 직접 충돌난 부분의 코드를 수정하고 다시 커밋하면 된다.
* 로컬저장소와 원격저장소 병합시 충돌상황 이해하기
내 pc 의 main 브랜치에는 a_, b_ 코드가 포함된 파일이 있다. 이를 커밋하고 깃허브(원격저장소)에 푸쉬한다. 다른 개발자가 자신의 pc 에서 깃허브에 저장된 파일(a_,b_ 코드가 포함된)을 pull 해서 다운로드 받는다. 다른 개발자는 다운로드 받은 파일에 c_ 라는 코드를 추가한다. 그런 다음 커밋하고 깃허브에 푸쉬한다.
나는 main 브랜치에서 현재 파일(a_, b_ 코드가 포함된)에 d_ 코드를 추가하고 커밋한다. 곧바로 깃허브에 푸쉬를 하려고 할때 충돌이 발생한다. 깃허브에는 현재 파일에 a_, b_, c_ 코드가 포함되어 있고, 내 로컬 pc 에는 a_, b_, d_ 코드가 존재하므로 차이에 의하여 병합시 충돌한다.
이를 해결하기 위해서는 위와 같이 먼저 깃허브(원격저장소)의 변경이력을 pull 해서 내 소스코드에 반영해야 한다. 그러면 내 파일에는 a_, b_, c_, d_ 코드가 존재한다. 그런 다음 push 를 수행하면 충돌없이 원격저장소와 병합이 이루어진다.
'깃허브' 카테고리의 다른 글
깃허브 입문시 참고할 자료 (1) | 2024.01.22 |
---|---|
개발시 자주 사용하는 깃 명령어 정리 (1) | 2024.01.22 |
깃 브랜치 삭제하기 (1) | 2024.01.22 |
깃허브 사용시 자주 에러나는 부분 (2) | 2024.01.22 |
깃허브 협업 튜토리얼 (3) | 2023.09.14 |