서브버전 SVN에서 변경사항을 되돌리는 방법은?
_____A1: 워킹 카피에서 해당 파일을 선택한 후, 다음 명령어를 사용합니다.
```bash
svn revert <파일경로>
```
이 명령어는 워킹 카피의 변경사항을 취소하고, 해당 파일을 마지막 커밋된 상태로 되돌립니다. 단, 이미 커밋된 변경사항은 되돌리지 않습니다.
---
Q2: SVN에서 특정 리비전을 이전 상태로 되돌리고 싶을 때는 어떻게 하나요?
A2: 다음 명령어를 사용해 특정 리비전의 변경사항을 취소하는 롤백(역병합) 작업을 할 수 있습니다.
```bash
svn merge -c -<리비전번호> <리포지터리URL> <작업디렉토리>
```
예: 리비전 100을 되돌리려면
```bash
svn merge -c -100 https://svn.example.com/repos/project/trunk ./
```
이후 변경된 워킹 카피를 커밋하면 리비전 100의 변경사항이 제거됩니다.
---
Q3: 여러 리비전을 한 번에 되돌리고 싶을 땐?
A3: `-c` 옵션에 여러 리비전을 쉼표로 구분하여 취소할 수 있습니다. 예:
```bash
svn merge -c -100,-101,-102 https://svn.example.com/repos/project/trunk ./
```
이렇게 하면 리비전 100, 101, 102의 변경사항이 모두 되돌려집니다.
---
Q4: 되돌리기를 한 후 커밋은 꼭 해야 하나요?
A4: 네. 워킹 카피에서 변경사항을 되돌리고 나면, 서버 리포지터리에 반영하려면 반드시 `svn commit` 명령어로 커밋해야 합니다. 그렇지 않으면 되돌리기 작업이 리포지터리에 반영되지 않습니다.
---
Q5: 커밋된 리비전 전체를 완전히 삭제할 수 있나요?
A5: SVN은 기존 리비전의 삭제는 기본적으로 지원하지 않습니다. 되도록이면 리비전 되돌리기(역병합)로 변경사항을 취소하는 방식을 사용합니다. 만약 리비전을 완전 삭제해야 한다면 관리자 권한으로 `svndumpfilter`를 이용한 리포지터리 덤프/로드 작업이 필요하며, 이는 주의해서 진행해야 합니다.
---
Q6: 작업 중 일부 파일만 되돌리고 싶으면?
A6: `svn revert` 명령어 뒤에 복수의 파일명이나 경로를 지정하여 부분적으로 되돌릴 수 있습니다. 예를 들어:
```bash
svn revert file1.txt dir/file2.c
```
이렇게 하면 지정한 파일들만 마지막 커밋 상태로 복원됩니다.
---
Q7: 워킹 카피 변경사항을 모두 되돌리고 싶습니다.
A7: 워킹 카피 최상위 디렉토리에서 다음 명령어를 사용하면 전체 변경사항을 한꺼번에 되돌릴 수 있습니다.
```bash
svn revert -R .
```
`-R` 옵션은 재귀적으로 모든 파일과 디렉토리를 되돌립니다.
---
요약:
- `svn revert` : 워킹 카피 변경사항 취소 (커밋 전)
- `svn merge -c -리비전번호` : 특정 리비전 변경사항 되돌리기(역병합)
- 커밋 후 변경사항 완전 삭제는 일반적이지 않으며 위험함
- 커밋 필요함 (되돌림 반영 시)
- 부분 또는 전체 파일별로 선택적 되돌림 가능
이 방법들을 활용하여 SVN에서 변경사항을 안전하게 되돌릴 수 있습니다.
여기서는 일반적으로 사용되는 몇 가지 방법을 소개하겠습니다.
1. 마지막 변경 사항 되돌리기 가장 최근의 커밋으로 파일을 되돌리고 싶다면 `revert` 명령어를 사용할 수 있습니다.
```bash svn revert <파일이름> ``` 이 명령어는 지정한 파일의 수정 사항을 취소하고, 마지막 커밋된 상태로 되돌립니다.
2. 특정 리비전으로 되돌리기 특정 리비전으로 돌아가고 싶다면 `merge` 명령어를 사용할 수 있습니다.
이 방법은 원하는 리비전의 변경 사항을 현재 작업 사본에 적용하여 이전 상태로 되돌리는 방식입니다.
```bash svn merge -r HEAD:<리비전번호> <디렉토리이름> ``` 여기서 `HEAD`는 현재 리비전을 나타내고, `<리비전번호>`는 되돌리려는 이전 리비전입니다.
`<디렉토리이름>`은 작업 중인 디렉토리입니다.
이 명령어를 실행한 후, 변경 사항을 커밋해야 합니다.
3. 파일의 특정 리비전으로 되돌리기 특정 파일을 이전 커밋으로 되돌리고 싶다면, 다음과 같이 사용할 수 있습니다.
```bash svn copy -r <리비전번호> <파일이름> <파일이름> ``` 이 명령어는 파일을 특정 리비전으로 복사합니다.
4. 전체 경로의 특정 리비전으로 되돌리기 전체 디렉토리를 특정 리비전으로 되돌리려면 다음과 같이 사용할 수 있습니다.
```bash svn merge -r HEAD:<리비전번호> <리포지토리URL> ``` 이 명령어는 전체 경로를 선택한 리비전으로 되돌리며, 리포지토리를 참조합니다.
5. 변경 사항 취소 후 커밋 위에서 언급한 방법으로 파일이나 디렉토리를 되돌린 후, 변경 사항을 리포지토리에 저장하기 위해 다음과 같이 커밋할 수 있습니다.
```bash svn commit -m "Reverted changes to revision <리비전번호>" ``` 주의사항 - `svn revert` 명령어는 되돌리기 전에 변경 내용을 복구할 수 없으므로, 중요한 변경 사항이 있다면 따로 백업을 권장합니다.
- SVN 작업은 로컬에서 진행되기 때문에 리모트 서버에 직접 영향을 미치지 않으므로, 개인적인 변경이 있는 경우에는 항상 유의하여 사용해야 합니다.
이러한 방법들을 사용하여 SVN에서 변경 사항을 효과적으로 되돌릴 수 있습니다.
작성자:
김현빈 [비회원]
| 작성일자: 1년 전
2025-03-21 15:50:52
조회수: 390 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 390 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.