'제로베이스 데이터스쿨'에서 SQL에 이어 Git에 대해 배우고 있습니다. 처음 git을 접한 것은 Streamlit 페이지를 Github을 통해 공개하기 위해서였습니다. 당시에는 git이 뭔지도 모른채, 단지 steamlit 페이지를 웹에 퍼블리시하기 위해 필요하다는 것만 알고 시작했습니다.
초반에는 git의 기본 개념조차 모르는 상태에서 시작했기 때문에, 충돌(conflict)이 발생했을 때 그 의미를 이해하지 못했고, 단지 구글링을 통해 임시방편으로 상황을 모면하기 바빴습니다. 제로베이스를 통해 드디어 git에 대해 체계적으로 배우게 되었습니다. 특히 mergetool을 이용해 충돌을 해결하는 과정은 과거의 경험이 떠올라서인지 인상깊었습니다. 이 포스트에선 강의를 통해 배운 mergetool에 대해 조사한 내용들을 정리해 보도록 하겠습니다.
프로젝트 개발 과정에서 Git은 코드 버전 관리의 필수적인 도구입니다. 여러 개발자가 동시에 같은 코드 베이스에서 작업하면서도 서로의 작업을 쉽게 통합할 수 있습니다. 하지만, 때때로 이 통합 과정에서 '충돌(conflict)'이 발생합니다. 특히, 서로 다른 브랜치에서 동일한 파일의 같은 부분을 수정했을 때 충돌이 발생하곤 합니다. 이러한 충돌은 협업의 자연스러운 일부이지만, 해결되지 않으면 프로젝트 진행에 큰 장애물이 될 수 있습니다. Mergetool은 시각적 인터페이스를 제공하여 충돌을 더 쉽게 식별하고 해결할 수 있도록 도와줍니다.
Visual Studio Code를 Git의 기본 에디터와 Mergetool로 설정하는 것은 작업 흐름을 크게 개선할 수 있습니다.
Git 작업 중에 파일을 열 때마다 기본적으로 사용되는 텍스트 에디터를 설정할 수 있습니다. VSCode를 기본 에디터로 설정하려면, 터미널이나 명령 프롬프트에서 다음 명령어를 실행합니다:
git config --global core.editor "code --wait"
이 명령은 Git이 VSCode를 호출할 때, 사용자가 편집을 완료할 때까지 대기하도록 합니다. --wait 플래그는 Git이 사용자의 입력을 기다리게 만들어, 커밋 메시지를 작성하거나 병합 작업을 할 때 매우 유용합니다.
만약 추가적인 Git 설정이 필요하다면, 전역 Git 설정 파일을 직접 편집할 수도 있습니다. 이를 위해 다음 명령을 사용합니다:
git config --global -e
이 명령은 Git의 전역 설정 파일을 VSCode로 열어, 필요한 설정을 추가하거나 변경할 수 있게 해줍니다.
VSCode를 Mergetool로 사용하려면, Git 설정에 몇 가지 추가 정보를 입력해야 합니다. 다음은 그 설정 방법입니다:
[merge]
tool = vscode
[mergetool "vscode"]
cmd = code --wait $MERGED
위 설정은 Git이 병합 충돌을 해결하기 위해 VSCode를 호출할 때 사용되는 명령을 정의합니다. $MERGED는 현재 병합 중인 파일을 가리키며, VSCode가 열리고 사용자가 충돌을 해결할 때까지 대기합니다.
이제 설정이 완료되었으니, 실제로 충돌이 발생했을 때 git mergetool을 실행하면 VSCode가 Mergetool로 자동으로 열릴 것입니다.
충돌이 발생했을 때, Visual Studio Code의 Mergetool 기능을 활용하면 충돌을 시각적으로 쉽게 해결할 수 있습니다.
Mergetool 실행하기:
터미널에서 git mergetool 명령을 실행합니다. 충돌이 발생한 모든 파일에 대해 VSCode의 Mergetool이 자동으로 열립니다.
충돌 내용 확인하기:

VSCode의 Mergetool은 충돌이 발생한 부분을 표시합니다. 'HEAD'는 현재 체크아웃된 브랜치의 버전, 'Incoming Change'는 병합하려는 브랜치의 변경사항을 나타냅니다.
충돌 해결하기:
충돌 부분에서 원하는 코드를 선택하거나 직접 수정하여 충돌을 해결합니다. 원하는 내용으로 파일을 수정하고 충돌을 나타내는 내용들은 삭제한 뒤 저장합니다.
병합 완료 후 Mergetool 닫기:
모든 충돌을 해결하고 파일을 저장한 후 Mergetool을 닫습니다.
변경 사항 커밋하기:
충돌 해결이 완료되면, git commit을 실행하여 변경사항을 커밋합니다. 이때 Git은 충돌 해결에 대한 기본 커밋 메시지를 제공할 수 있습니다.
Git 충돌과 처음 마주했을 때를 생각하면 그저 당혹감 뿐 이었습니다. 버전 관리라는 개념 자체가 낯설었던 터라, 동일한 파일에서 발생하는 충돌의 이유를 이해하지 못했고, 그저 문제가 빨리 사라지기만을 바랐습니다. 하지만 Git을 배우고 나니 충돌은 개발 과정의 일부이며, 이를 효율적으로 관리하는 능력은 팀의 작업 흐름을 유지하고 프로젝트를 원활하게 진행하는 데 필수적입니다.
Git 강의를 들으면서, 이전의 미숙했던 기억이 떠올라서인지, 점점 더 데이터 분석가로 일할 준비가 되어 가고 있다고 느낍니다.