서브버전 SVN에서 특정 버전으로 롤백하는 방법은?
_____답변: SVN에서 특정 버전으로 롤백하는 방법은 크게 두 가지가 있습니다.
---
1. 특정 리비전의 변경사항을 되돌리는 방법 (Revert changes between revisions)
이 방법은 특정 리비전부터 이후 리비전까지의 변경사항을 취소하는 커밋을 만드는 방식입니다.
명령어 예시:
```bash
svn merge -r HEAD:
```
또는, 로컬 작업복사본에서:
```bash
svn merge -c -
```
- -r HEAD:
- 예를 들어, 현재 HEAD가 150이고 120으로 되돌리고 싶다면:
```bash
svn merge -r 150:120 .
```
또는 여러 리비전을 개별적으로 되돌리려면:
```bash
svn merge -c -125,-130 .
```
등으로 입력.
절차:
1. 로컬 작업 복사본 업데이트 (`svn update`).
2. 위 명령어로 변경사항 되돌리기.
3. 충돌 해결(있는 경우).
4. 변경사항 커밋 (`svn commit -m "Rollback to revision 120"`).
---
2. 특정 리비전으로 작업복사본을 체크아웃하는 방법 (Checkout specific revision)
이 방법은 작업복사본을 특정 리비전 상태로 바꾸는 것으로, "진짜 롤백"이라기보다는 과거 상태 확인용입니다.
명령어:
```bash
svn checkout -r
예:
```bash
svn checkout -r 120 https://svn.example.com/repo/trunk myproject
```
> 주의: 이 방법은 단순히 과거 상태를 확인하거나 빌드할 때 사용하며, 이 상태에서 다시 최신 버전으로 커밋할 수 없습니다.
---
3. 참고 - 과거 리비전으로 강제로 변경 사항 재등록 하기
예:
```bash
svn merge -r HEAD:
svn commit -m "Rollback to revision
```
이는 HEAD에서 특정 리비전으로 '역 머지'를 하는 방법으로 실제 롤백 커밋을 발생시키므로, 프로젝트 이력은 보존됩니다.
---
요약
| 방법 | 특징 | 사용 시기 |
|-----------------------------|-----------------------------------------|----------------------------------|
| svn merge -r HEAD:X . | 작업복사본에서 현재 상태를 과거 상태로 되돌림(롤백) | 실제 롤백 변경사항 커밋시 |
| svn checkout -r X URL | 특정 리비전 작업복사본 생성 (읽기 전용 또는 참조용) | 과거 코드 확인 시 |
---
주의사항:
- 롤백 시 커밋 기록이 남으므로 프로젝트 히스토리가 유지됩니다.
- 여러 리비전을 동시에 되돌릴 때 충돌이 발생할 수 있으니 주의하고, 반드시 사전에 작업복사본을 최신 상태로 업데이트하세요.
- 롤백은 팀과 협의 후 진행하는 것이 안전합니다.
---
참고 링크:
- [SVN Merge Documentation](https://svnbook.red-bean.com/en/1.14/svn.ref.svn.c.merge.html)
- [Subversion: Rollbacks & Reverse Merges](https://svnbook.red-bean.com/en/1.14/svn.ref.svn.c.merge.html svn.ref.svn.c.merge.reverse)
---
필요 시 추가로 상세 절차, 충돌 해결법 등을 알려드릴 수 있습니다.
여기서는 기본적인 커맨드라인 도구를 사용한 방법을 설명하겠습니다.
1. 현재 작업 복사본 확인 먼저, 작업 복사본(working copy)에서 현재 어떤 버전을 사용 중인지 확인할 수 있습니다: ```bash svn info ``` 이 명령어를 입력하면 현재 체크아웃한 상태의 정보를 보여줍니다.
여기에서 `Revision` 번호를 확인할 수 있습니다.
2. 이전 버전으로 롤백 이제 특정 리비전을 체크아웃하려면 다음 명령어를 사용합니다: ```bash svn update -r <리비전번호> ``` 예를 들어, 리비전 100으로 롤백하고 싶다면, 다음과 같이 입력합니다: ```bash svn update -r 100 ``` 이 명령어를 실행하면, 작업 복사본이 지정한 리비전으로 업데이트됩니다.
3. 변경 사항 커밋하기 이제 특정 버전으로 롤백했지만, 변경 사항을 다른 사용자와 공유하려면 해당 변경 사항을 커밋해야 합니다.
다음과 같은 명령어로 커밋할 수 있습니다: ```bash svn commit -m "Rollback to revision 100" ``` 여기서 `-m` 플래그는 커밋 메시지를 추가하는 옵션입니다.
4. 삭제된 파일 및 폴더 복원 (선택 사항) 만약 어떤 파일이나 폴더가 특정 리비전에서 삭제되었다면, 이 파일이나 폴더를 복원해야 할 수 있습니다.
이 경우에는 해당 파일을 직접 찾고, 원하는 리비전의 복사본을 체크아웃하거나, 파일을 재생성해야 합니다.
5. 롤백 검증 롤백 후에 작업 복사본이 올바르게 업데이트되었는지 확인하려면 다시 `svn info` 명령어를 사용하여 확인합니다.
반드시 원래의 리비전으로 돌아갔는지 체크해야 합니다.
요약 - `svn update -r <리비전번호>`: 특정 리비전으로 업데이트 - `svn commit -m "메시지"`: 변경 사항 커밋 위의 단계들을 따라하면 SVN을 사용하여 손쉽게 특정 버전으로 롤백할 수 있습니다.
항상 롤백을 수행하기 전에 현재 상태를 백업하는 것이 좋습니다.
작성자:
최다현 [비회원]
| 작성일자: 1년 전
2025-03-21 15:50:55
조회수: 374 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 374 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.