Git 충돌 해결하는 방법
Git 충돌 해결하는 방법
Git 충돌 해결하는 방법
Git에서 commit
또는 merge
과정 중에 conflict(충돌)가 발생하는 경우, 이는 두 명 이상의 개발자가 동일한 파일의 동일한 부분을 수정했기 때문에 발생합니다. 충돌이 발생하면 Git은 자동으로 병합하지 못하고, 개발자가 수동으로 해결해야 합니다. 이번 글에서는 충돌이 발생했을 때 해결하는 방법을 단계별로 설명하겠습니다.
1. 충돌 상황 확인
충돌이 발생하면 Git은 충돌이 발생한 파일들을 표시해줍니다. 충돌이 발생한 상태에서 git status
명령어를 실행하면, 충돌이 난 파일을 확인할 수 있습니다.
git status
출력 예시:
On branch main
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: conflict-file.txt
위와 같이 both modified
로 표시된 파일이 충돌이 발생한 파일입니다.
2. 충돌 내용 확인
충돌이 발생한 파일을 열어보면, Git은 충돌된 부분을 자동으로 표시해줍니다. 충돌된 부분은 아래와 같은 형식으로 나타납니다.
<<<<<<< HEAD
// 현재 브랜치에서 작업한 내용
=======
// 다른 브랜치 또는 리모트에서 가져온 내용
>>>>>>> branch-name
<<<<<<< HEAD
아래는 내 브랜치에서 작업한 내용입니다.=======
아래는 병합하려는 브랜치의 내용입니다.>>>>>>> branch-name
은 병합하려는 브랜치 또는 커밋 이름을 표시합니다.
충돌 파일 예시
<<<<<<< HEAD
This is content from my branch.
=======
This is content from the other branch.
>>>>>>> branch-name
이제 두 내용 중 어느 것을 유지할지, 혹은 둘을 합쳐서 새로운 내용을 만들지 선택해야 합니다.
3. 충돌 해결
충돌을 해결하기 위해서는 수동으로 충돌 부분을 수정하고, 충돌 표시자(<<<<<<<
, =======
, >>>>>>>
)를 모두 제거해야 합니다.
수정 예시
This is merged content from both branches.
이제 충돌 파일에서 원하는 방식으로 코드를 수정하고 저장한 후, 충돌 표시자를 모두 삭제합니다.
4. 충돌 해결 후 스테이징
충돌을 해결한 후에는 Git에게 해당 파일이 해결되었음을 알려줘야 합니다. 이를 위해 git add
명령어로 수정한 파일을 스테이징합니다.
git add conflict-file.txt
5. 커밋 완료
충돌을 해결하고 스테이징이 완료되었다면, 이제 커밋을 완료할 수 있습니다.
git commit
Git은 자동으로 커밋 메시지에 충돌이 해결되었음을 표시해줍니다. merge
를 시도한 경우라면 merge
과정도 자동으로 완료됩니다.
충돌 발생을 줄이는 팁
자주 Pull 하기 충돌을 줄이기 위해서는 자주 원격 리포지토리에서 최신 상태를 가져오는 것이 좋습니다. 특히 팀 프로젝트에서 서로 작업을 병합하기 전에 최신 코드를 가져오면 충돌을 줄일 수 있습니다.
git pull origin main
작은 단위의 작업 커밋을 자주하고, 작은 단위로 작업을 나누면 충돌이 발생할 가능성을 줄일 수 있습니다. 한 번에 너무 많은 파일을 변경하지 않도록 주의하세요.
코드 리뷰 & 커뮤니케이션 팀원 간에 코드 리뷰를 자주하고, 수정된 내용을 공유하는 것도 충돌을 줄이는 방법입니다. 서로 수정할 부분을 미리 알면 충돌 가능성이 줄어듭니다.
요약
Git 충돌은 협업 중에 자주 발생할 수 있는 상황이지만, 충돌을 해결하는 방법을 알면 문제를 빠르게 해결할 수 있습니다. 충돌이 발생했을 때는 먼저 git status
로 충돌 파일을 확인하고, 해당 파일을 열어 충돌된 부분을 수동으로 해결한 후, 수정한 파일을 스테이징하고 커밋하면 됩니다. 충돌을 미리 방지하기 위해 자주 Pull을 하고, 팀원과의 커뮤니케이션을 강화하는 것도 좋은 방법입니다.
충돌이 발생할 때 당황하지 말고, 차근차근 해결하는 것이 중요합니다.