2010-05-25 30 views
162

Tôi đã ở giữa làm một đệ quy svn thêm/cam kết, và một thư mục mà không có các thuộc tính bỏ qua thích hợp đã được bao gồm. Tôi đã có khoảng 100 tệp nhị phân đã tải lên được phiên bản ngay bây giờ, nhưng tôi chưa cam kết."unadd" một tập tin để svn trước khi cam kết

Cách dễ nhất để 'hoàn tác' điều này là gì, mà không xóa tất cả tài liệu?

Trả lời

214

Sử dụng svn revert --recursive folder_name


Warning

svn revert vốn đã nguy hiểm, vì toàn bộ mục đích của nó là để vứt bỏ dữ liệu   — cụ thể là, những thay đổi không bị giam của bạn. Khi bạn đã hoàn nguyên, Subversion cung cấp không có cách nào để lấy lại những thay đổi không được cam kết đó.

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

+12

Để mở rộng khi điều này - 'hoàn nguyên' mà không sửa đổi được chỉ định undoes bất kỳ thay đổi nào đã xảy ra kể từ lần thanh toán cuối cùng, bao gồm thêm/xóa thay đổi lịch biểu, cho (các) tệp được chỉ định. – Amber

+0

trong đó folder_name là thư mục mẹ của thư mục mà bạn đã thực hiện lệnh "Thêm" – MacGyver

+16

Câu trả lời này là không chính xác nguy hiểm - nó sẽ unstage thay đổi của bạn bằng cách loại bỏ bản sao địa phương của bạn của các tập tin. Câu trả lời của Brian Lacy dưới đây là tốt hơn nhiều. –

26

Hãy thử svn revert filename cho mọi tệp bạn không cần và chưa cam kết. Hoặc cách khác là svn revert -R folder cho thư mục có vấn đề và sau đó thực hiện lại thao tác với cấu hình bỏ qua chính xác.

From the documentation:

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 
+1

Không! Hoàn nguyên là không an toàn, vì nó mất tất cả các thay đổi cục bộ – jpaugh

+0

@jpaugh - Đây chính xác là những gì tôi đã viết trong câu trả lời, phải không? – bobah

+0

Những gì OP yêu cầu (và những gì tôi đã mong đợi) là một lệnh để hoàn tác việc thêm * mà không * mất các thay đổi cục bộ. 'svn revert'. Không có câu trả lời nào ở đây đề cập đến thực tế là các thay đổi cục bộ sẽ bị mất do hoàn nguyên. – jpaugh

113

svn rm --keep-local folder_name

Lưu ý: Trong svn 1.5.4 svn rm xóa các tập tin không phiên bản ngay cả khi --keep địa phương được xác định. Xem http://svn.haxx.se/users/archive-2009-11/0058.shtml để biết thêm thông tin.

+7

Điều này là tốt để biết vì nó cho phép bạn chỉ cần hoàn tác "svn add" mà không làm mất các thay đổi! –

+1

Bạn có chắc SVN 1.5.4 xóa các tập tin không phiên bản không? Báo cáo không thể sinh sản được và không có email nào khác về điều đó. –

+3

Đây là câu trả lời tốt hơn nếu bạn muốn "unadd" các tập tin, nhưng vẫn giữ chúng. Sau lệnh này, các tệp sẽ vẫn ở đó với? trạng thái. –

1

Đối Files - svn revert filename

Đối Folders - svn revert -R folder

+2

Không! Hoàn nguyên không an toàn vì nó mất tất cả thay đổi cục bộ – jpaugh

0

quá trình đầy đủ (Unix svn gói):

Kiểm tra file đang không ở trong SVN:

> svn st -u folder 
? folder 

Thêm tất cả (bao gồm cả các tệp bị bỏ qua):

> 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 

Remove "Add" Cờ đến All * Bỏ qua file *:

> cd folder 

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


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

Sửa svn bỏ qua trên thư mục

svn propedit svn:ignore . 

Thêm hai dòng single chỉ với những điều sau đây:

folderToIgnore 
fileToIgnore1.txt 

Kiểm tra xem tệp nào sẽ được tải lên và cam kết:

> cd .. 

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


> svn ci -m "Commit message here" 
Các vấn đề liên quan