커밋하기 전에 svn에 파일을“추가”


200

나는 재귀 적 svn 추가 ​​/ 커밋을하는 중간에 있었고 적절한 무시 속성이없는 폴더가 포함되었습니다. 현재 버전이 올라간 약 100 개의 업로드 된 이진 파일이 있지만 아직 커밋하지 않았습니다.

모든 문서를 삭제하지 않고 이것을 '실행 취소'하는 가장 쉬운 방법은 무엇입니까?

답변:


244

사용하다 svn revert --recursive folder_name


경고

svn revert전체 목적은 데이터, 즉 커밋되지 않은 변경을 버리는 것이므로 본질적으로 위험합니다. 일단 복귀하면 Subversion은 커밋되지 않은 변경 사항을 되돌릴 수있는 방법 을 제공 하지 않습니다 .

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.revert.html


12
이를 revert수정하면 지정된 수정없이 지정된 파일에 대해 일정 변경 추가 / 삭제를 포함하여 마지막 체크 아웃 이후 발생한 변경 내용이 취소됩니다.
Amber

여기서 folder_name은 "추가"명령을 수행 한 폴더의 상위 폴더입니다.
MacGyver

28
이 답변은 위험합니다. 파일의 로컬 복사본을 제거하여 변경 사항을 취소합니다. 아래의 Brian Lacy의 답변이 훨씬 좋습니다.
Henry Henrinson

6
여러분, 이것은 원래의 질문에 대답합니다 : 추가 된 다음 되 돌린 파일이나 폴더는 삭제되지 않고 버전이 아닌 것으로 돌아갑니다. 그것이 바로 질문이 묻는 것입니다. 수정 된 파일에서이 파일을 사용하면 파일을 되돌릴 수 있습니다. 그러나 그것은 문제가되지 않았습니다. 그것은 링크 된 페이지에 표시된 매우 구체적인 사용 사례입니다!
Julien Lebosquain

2
@JulienLebosquain 좋아, 당신과 나는이 문구를 다르게 이해합니다 : 모든 문서를 삭제하지 않고 . 불행히도 최신 버전 을 복원하여 작업 복사본에 svn revert새로 추가 된 변경 사항 도 삭제합니다 HEAD. 다운 보트를 제거했지만 여전히 경고가 중요하다고 생각합니다.
jpaugh

145

svn rm --keep-local folder_name

참고 : svn 1.5.4에서 svn rm은 --keep-local이 지정된 경우에도 버전없는 파일을 삭제합니다. 자세한 내용은 http://svn.haxx.se/users/archive-2009-11/0058.shtml 을 참조하십시오.


9
변경 사항을 잃지 않고 단순히 "svn add"를 취소 할 수 있기 때문에 알고있는 것이 좋습니다!
Ryan H.

1
특정 SVN 1.5.4가 버전없는 파일을 삭제합니까? 이 보고서는 생식이 불가능했으며 이에 대한 다른 이메일은 없습니다.
Quentin Pradet

4
파일을 "추가 취소"하고 싶지만 계속 유지하려는 경우이 방법이 더 좋습니다. 이 명령 후에도 파일은 여전히? 상태.
Robin Zimmermann 18

32

svn revert filename필요하지 않고 아직 커밋하지 않은 모든 파일에 대해 시도하십시오 . 또는 svn revert -R folder문제가있는 폴더를 수행 한 다음 올바른 무시 구성으로 작업을 다시 수행하십시오.

설명서에서 :

 you can undo any scheduling operations:

$ svn add mistake.txt whoops
A         mistake.txt
A         whoops
A         whoops/oopsie.c

$ svn revert mistake.txt whoops
Reverted mistake.txt
Reverted whoops

4
아니! 되돌리기는 모든 로컬 변경 푼다으로, 안전하지 않은
jpaugh

@jpaugh-이것은 내가 대답에 쓴 것과 정확히 일치합니까?
보바

1
OP가 요청한 것 (및 내가 기대했던 것)은 로컬 변경 사항 잃지 않고 추가를 취소하는 명령이었습니다 . svn revert. 여기에 대한 답변 중 어느 것도 되돌림으로 인해 로컬 변경 사항이 손실된다는 사실을 언급하지 않습니다.
jpaugh

3

전체 프로세스 (Unix svn 패키지) :

검사 파일이 SVN에 없는지 확인하십시오.

> svn st -u folder 
? folder

모두 추가 (무시 된 파일 포함) :

> svn add folder
A   folder
A   folder/file1.txt
A   folder/folder2
A   folder/folder2/file2.txt
A   folder/folderToIgnore
A   folder/folderToIgnore/fileToIgnore1.txt
A   fileToIgnore2.txt

"추가"플래그를 모두 제거 * 파일 무시 :

> cd folder

> svn revert --recursive folderToIgnore
Reverted 'folderToIgnore'
Reverted 'folderToIgnore/fileToIgnore1.txt'


> svn revert fileToIgnore2.txt
Reverted 'fileToIgnore2.txt'

폴더에서 svn ignore 수정

svn propedit svn:ignore .

다음과 같이 두 개의 싱글 라인을 추가하십시오.

folderToIgnore
fileToIgnore2.txt

업로드 및 커밋 할 파일을 확인하십시오.

> cd ..

> svn st -u
A   folder
A   folder/file1.txt
A   folder/folder2
A   folder/folder2/file2.txt


> svn ci -m "Commit message here"

1
고마워, 내가 정확히 필요한 것. 파일 내용 자체를 건드리지 않고 '추가'작업 만 되 돌린 것 같습니다. 이전 답변에 대한 의견에 따라 로컬 변경 사항을 잃어 버릴 까봐 두려워했지만 파일이 손상되지 않은 것 같습니다.
Peter M.-

1

파일의 경우- svn revert filename

폴더의 경우- svn revert -R folder


4
아니! 되돌리기는 모든 로컬 변경 푼다으로, 안전하지 않은
jpaugh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.