📌 문제 발생 및 원인 분석
발생 시점: 2025년 9월 12일 17:00
문제 상황: 팀원A가 작업물을 푸시(push)하기 직전 머지(merge) 과정에서 예기치 않은 깃(Git) 충돌이 발생.
<<<HEAD와 같은 충돌 표시와 함께 일부 작업물이 유실되거나 손상됨.
동시 작업자가 없었음에도 충돌이 발생해 혼란이 발생했고, 다른 팀원들도 연이어 유사한 충돌.
원인 분석:
당일 18:00 추적 결과, 팀원B가 공용 브랜치에 수정 내용을 바로 푸시(push)하여 이력 분기(Diverged History)가 발생한 것이 주요 원인으로 파악됨.
이로 인해 팀원들의 로컬 이력과 원격 이력이 서로 달라지면서 충돌이 연쇄적으로 발생.
문제를 인지한 후 당일 작업은 중단하고 다음 작업일에 해결하기로 합의.
🛠️ 해결 과정 및 조치
해결 시점: 2025년 9월 15일 10:00 ~ 11:30
해결 내용:
잘못된 병합(Bad Merge) 해결: 9월 15일 10:00, 팀원A의 문제를 해결하기 위해 원격 브랜치를 강제로 덮어쓰는 git push --force 명령을 사용했으나, 팀원A의 로컬 저장소가 최신화되지 않아 작업 이력이 다시 유실되는 문제가 발생.
롤백 및 재병합: 10:30, 가장 최근에 정상적으로 푸시된 팀원의 작업 이력으로 롤백(rollback)한 뒤, 팀원A의 수정 내용이 포함된 브랜치를 다시 병합.
파일 수동 병합: 기존 코드 문제로 인해 단순 명령어로는 해결이 어렵다고 판단, 수정된 파일을 순차적으로 수동으로 옮긴 후 푸시하여 최종적으로 충돌을 해결.
코드 검토: 11:30부터 각자 코드 확인 및 테스트를 진행하며 안정성을 확보.
📉 피해 및 교훈
총 피해 시간: 약 5시간 (실제 작업 중단 및 문제 해결에 소요된 시간)
9월 12일 17:00 이후: 작업 중단
9월 15일 오전: 대부분의 시간을 문제 해결 및 코드 검토에 할애
교훈:
공용 브랜치에 직접 푸시 금지: 공용 브랜치에 직접 커밋하거나 푸시하는 행위는 팀 전체의 작업 이력을 꼬이게 할 수 있으므로 반드시 금지.
git pull 습관화: 작업을 시작하거나 푸시하기 전에 git pull을 통해 최신 이력을 항상 확인하고 로컬 저장소를 최신 상태로 유지하는 습관.
git push --force 사용 경고: git push --force와 같은 강제 명령은 팀원들의 작업 이력을 덮어씌울 수 있으므로, 반드시 필요한 상황에서만 신중하게 사용.
이러한 문제 재발 방지를 위해 팀 내 깃(Git) 사용 규칙을 명확히 하고, 정기적인 코드 리뷰와 병합(merge) 절차를 강화하는 것이 중요.
'Git' 카테고리의 다른 글
깃충돌 대응기록 (동시작업 🤣) (0) | 2025.09.10 |
---|---|
SCM, VSC, and 분산형 저장 시스템 Git(계속) (0) | 2025.04.24 |