머지
여러 사람이 각자 나눠서 쓴 원고를 모아 하나의 완성된 책으로 합치는 과정이에요.
정의 머지(Merge)는 프로그램 개발에서 각자 독립된 작업 공간(브랜치)에서 작성한 코드와 변경 기록을 하나의 큰 줄기로 합치는 작업이에요. 여러 사람이 동시에 각기 다른 기능을 개발하더라도 기존 작업물을 망가뜨리지 않고 안전하게 결과물을 합칠 수 있게 도와줘요.
조별 과제 보고서를 하나로 모으는 방법
친구들과 조별 과제를 할 때 각자 맡은 파트를 따로 작성해 본 적이 있을 거예요. 1번 친구는 서론, 2번 친구는 본론, 3번 친구는 결론을 맡아 각자의 컴퓨터에서 문서를 작성해요. 모든 작업이 끝나면 마지막에 한 파일로 내용을 복사해서 모아야 최종 보고서가 완성돼요.
소프트웨어를 개발할 때도 똑같은 방식을 사용해요. 프로그래머들은 거대한 프로그램을 만들 때 메인 코드에서 가지를 치듯 독립된 작업 공간을 만들어 각자 기능을 구현해요. 버전 관리 도구인 깃(Git)에서는 이렇게 나눈 작업 줄기를 '브랜치(Branch)'라고 불러요.
각자의 공간에서 개발과 테스트를 마친 뒤에는 완성된 코드를 중심 줄기로 합쳐야 해요. 이렇게 갈라져 나갔던 작업 내역을 기준 줄기에 안전하게 모으는 과정을 머지라고 불러요.
깃은 어떻게 스스로 코드를 합칠까요?
글을 합칠 때 사람이 문장마다 눈으로 대조하며 붙여 넣으면 중요한 내용을 빠뜨리거나 실수하기 쉬워요. 하지만 버전 관리 프로그램은 파일의 어떤 줄이 언제 추가되고 삭제되었는지 변경 이력을 바탕으로 자동 병합해요.
예를 들어 수진이는 10번째 줄의 오타를 고치고, 민우는 50번째 줄에 새로운 문장을 추가했다고 해볼게요. 두 사람이 건드린 위치가 서로 완전히 다르기 때문에 프로그램은 두 사람의 수정 사항을 겹치지 않게 순서대로 합쳐 줘요.
조금 더 정확히 말하면, 깃은 두 작업이 갈라져 나온 '공통의 조상 시점'을 기준으로 삼아요. 갈라진 이후 각자 어떤 줄을 고쳤는지 확인하고, 충돌이 없는 부분은 마법처럼 알아서 하나의 완성본으로 엮어내요.
같은 자리를 동시에 고치면 어떻게 될까요?
만약 두 사람이 똑같은 파일의 같은 줄을 서로 다른 내용으로 수정했다면 어떻게 될까요? 컴퓨터는 누구의 코드가 올바른지 스스로 알 수 없어서 합치는 작업을 멈추고 도움을 요청해요.
이러한 상황을 머지 충돌(Merge Conflict)이라고 불러요. 컴퓨터가 멋대로 한쪽 코드를 지우고 덮어쓰면 심각한 오류가 생길 수 있으므로, 사람에게 직접 확인해 달라고 멈춰 서는 안전장치예요.
이때 개발자는 두 사람이 바꾼 코드를 나란히 비교하며 어떤 코드를 최종본에 남길지 직접 선택해요. 충돌 난 부분을 알맞게 고치고 정리해야만 비로소 머지 작업이 안전하게 마무리돼요.
🤔 흔한 오해
머지를 하면 한쪽 코드가 다른 쪽 코드를 그냥 덮어쓴다.
머지는 단순 덮어쓰기가 아니라 각자의 변경 이력을 꼼꼼하게 비교해 이어 붙이는 작업이에요. 같은 위치가 겹치는 경우에만 사람에게 충돌 알림을 줘요.
🧺 일상에서 만나요
머지는 각자 나눠서 개발한 독립된 코드 줄기를 하나로 안전하게 합치는 작업이에요.