2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

서브버전 SVN에서 충돌을 해결하는 방법은?

_____
Q1: SVN에서 충돌(conflict)이 발생하는 이유는 무엇인가요?
A1: SVN에서 충돌은 같은 파일의 같은 부분을 두 명 이상의 사용자가 서로 다르게 수정했을 때 발생합니다. 서버에 업데이트하기 전 혹은 업데이트 과정에서 SVN이 자동 병합하지 못해 충돌 상태가 됩니다.

Q2: 충돌이 발생하면 SVN은 어떻게 알려주나요?
A2: 충돌 발생 시 `svn update` 명령 실행 후 콘솔에 충돌이 발생했다는 메시지가 나타나고, 충돌된 파일 옆에 `C` 표시가 붙습니다.

Q3: 충돌된 파일을 확인하려면 어떻게 하나요?
A3: `svn status` 명령을 실행하면 충돌된 파일은 앞에 `C` 표시로 나타납니다.

Q4: 충돌 파일을 열었을 때 어떤 내용을 보게 되나요?
A4: 충돌 파일에는 SVN이 자동으로 구분한 세 부분이 있습니다.
- `<<<<<<< .working` : 내 작업 사본 내용
- `=======` : 경계선
- `>>>>>>> .mine` 혹은 `>>>>>>> .rOLD` : 다른 사람의 변경분(베이스 내용 또는 최신 리비전)

Q5: 충돌을 해결하는 기본 절차는 무엇인가요?
A5:
1. 충돌된 파일을 텍스트 에디터나 머지 툴로 엽니다.
2. `<<<<<<<`, `=======`, `>>>>>>>` 표시를 참고하여 내 변경 내용과 상대 변경 내용 중 어느 것을 선택할지 혹은 두 내용을 적절히 병합합니다.
3. 충돌 표식을 모두 삭제하고, 파일을 저장합니다.
4. `svn resolved <파일명>` 명령으로 충돌 해결을 SVN에 알립니다. (SVN 1.7 이상에서는 이 명령이 셀프 수행되기도 합니다.)
5. 변경 내용을 커밋하여 저장소에 반영합니다.

Q6: 충돌 해결을 도와주는 도구는 어떤 것이 있나요?
A6:
- TortoiseSVN의 충돌 해결 대화상자 및 외부 머지 툴 (예: Beyond Compare, KDiff3)
- 명령줄 툴의 경우 `svn diff`, `svn merge`와 함께 외부 머지 프로그램 설정 가능
- IDE 통합 SVN 플러그인 내장 충돌 해결 기능

Q7: 충돌 해결 후 반드시 해야 할 일은 무엇인가요?
A7: 충돌 상태에서 벗어나려면 반드시 `svn resolved` 명령을 수행해 SVN에 충돌이 해결되었음을 알려야 하며, 이후 변경 내용을 커밋해야 합니다.

Q8: 충돌 해결 중 원본 상태로 되돌리고 싶을 때는?
A8: 충돌 파일을 `svn revert <파일명>` 명령으로 되돌리면 충돌 전 상태로 복원됩니다. 이 경우 내 변경 내용은 모두 삭제되니 주의해야 합니다.

Q9: SVN에서 충돌 관리를 미연에 방지하려면 어떻게 하나요?
A9:
- 자주 `svn update` 하여 최신 상태 유지
- 작업 영역 분리 및 역할 분담으로 동일 파일 동시 변경 최소화
- 커밋 전에 충돌 여부 체크 및 동료와 커뮤니케이션

---

요약하자면, SVN 충돌 해결은 충돌된 파일의 변경 내용을 비교·병합 후 SVN에 해결 완료를 알리고 커밋하는 과정입니다. 적절한 도구 사용과 주의 깊은 내용 검토가 중요합니다.
서브버전(SVN)에서 충돌을 해결하는 방법은 아래 단계에 따라 진행할 수 있습니다.

충돌은 여러 사용자가 같은 파일의 같은 부분을 수정했을 때 발생합니다.

다음은 SVN에서 충돌을 해결하는 절차입니다: 1. 충돌 감지 브랜치 또는 트렁크에서 `svn update` 명령어를 실행했을 때 충돌이 발생하면, SVN은 충돌이 발생한 파일의 상태를 알려줍니다.

예를 들어: ``` C example.txt ``` 여기서 'C'는 충돌을 의미합니다.



2. 충돌 파일 확인 충돌 발생 시 SVN은 해당 파일의 복사본을 생성합니다.

각 파일은 다음과 같은 이름으로 생성됩니다: - `example.txt.mine`: 사용자가 수정한 버전 - `example.txt.r<revision_number>`: 저장소의 최신 수정 버전 - `example.txt.r`: 충돌이 발생한 사용자의 버전

3. 충돌 해결 충돌을 해결하기 위해 다음 단계를 따르세요: a. 파일 비교 충돌이 발생한 파일들을 비교하고, 어떤 내용을 유지할 것인지 결정합니다.

이때, 텍스트 비교 도구를 사용할 수 있습니다.

예를 들어, 명령줄에서 `diff` 도구를 사용할 수 있습니다: ```bash diff example.txt.mine example.txt.r ``` 또는 텍스트 비교 툴 (예: Meld, Beyond Compare)을 사용하여 시각적으로 비교합니다.

b. 수정 파일을 열고 원하는 내용으로 파일을 수정합니다.

최종적으로 남길 내용을 선택하여 `example.txt` 파일에 반영합니다.



4. 충돌 마크 제거 수정이 완료되면 SVN에 충돌이 해결되었음을 알려주기 위해 다음 명령어를 사용합니다: ```bash svn resolve --accept working example.txt ``` 또는, 수정된 파일을 추가하고 싶다면: ```bash svn resolve --accept theirs-full example.txt ``` 이 명령어는 충돌을 완전히 수용하는 방법입니다(상대방의 버전으로 대체).

5. 변경 사항 커밋 모든 충돌이 해결된 후, 최종 결과를 SVN 저장소에 커밋합니다: ```bash svn commit -m "Resolved conflicts in example.txt" ``` 이제 충돌이 해결되고 변경 사항이 저장소에 반영되었습니다.

주의사항 - 충돌을 해결할 때 다른 팀원과의 소통이 중요합니다.

어떤 변경이 필요했는지 공유하여 유사한 문제가 발생하지 않도록 합니다.

- 자주 업데이트하여 충돌 가능성을 줄이는 것이 좋습니다.

이렇게 SVN에서 충돌을 해결할 수 있습니다.

각 상황에 따라 적절한 방법을 선택하여 적용하세요.

작성자: 이윤지 [비회원] | 작성일자: 1년 전 2025-03-21 15:50:53
조회수: 253 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.