2009-07-22 32 views
6

Trong một thư mục làm việc svn, tôi có thể'rm' + 'svn update' tương đương trong Git?

  1. thực hiện một số thay đổi trong các tập tin trong thư mục làm việc
  2. loại bỏ tất cả những thay đổi tôi được thực hiện bởi 'rm tất cả các file nguồn trong thư mục đó, nhưng giữ svn của tôi thư mục)
  3. truy xuất những gì thân cây được yêu cầu bằng cách sử dụng 'svn update' và svn sẽ tải xuống tất cả các nguồn trở lại thư mục làm việc của tôi.

Có lệnh tương đương nào trong git không? bạn có thể cho tôi biết làm thế nào để làm điều đó?

+2

Có svn hoàn nguyên; bạn không phải đi qua xóa tất cả các tệp bạn đã thực hiện thay đổi. – balpha

+0

'svn revert' sẽ không xóa các tệp đã thêm, tôi nghĩ vậy. – Bombe

Trả lời

9
git reset --hard 

là từ đồng nghĩa cho "git reset --hard HEAD" phải là những gì bạn đang tìm kiếm.

Hãy sử dụng thận trọng vì nó có hiệu quả sẽ xóa mọi thay đổi hiện tại trong thư mục làm việc của bạn. Xem "Undoing in Git"

Lưu ý: dưới dạng Charles Bailey đề cập trong nhận xét và in his answer, điều này sẽ không xóa các tệp không được theo dõi.
Vì vậy, git clean là công cụ phù hợp. Xem số answer for more của mình, nhưng cũng có câu hỏi SO "How do you remove untracked files from your git working copy?" hoặc bài viết Git-Ready "cleaning up untracked files".

Vì vậy, nếu chúng ta muốn làm một dọn dẹp chính:

$ git clean -n -d -x 

Đó chỉ huy sẽ dọn dẹp các file được liệt kê dưới tập tin .gitignore của dự án cũng như loại bỏ các file và thư mục khác mà aren' t cần thiết.
Như luôn đề phòng khi chạy git sạch và đảm bảo kiểm tra kỹ những gì bạn thực sự đang xóa.

Lưu ý, bạn có thể muốn move your untracked files instead.

+0

Có thể đáng lưu ý rằng điều này không loại bỏ các tập tin không đúng (hoặc mới hoặc bị bỏ qua) mà công thức svn của OP sẽ làm. –

4
  1. Bạn muốn vứt bỏ tất cả các thay đổi các tập tin theo dõi trong thư mục làm việc của bạn
  2. Bạn đang ở thư mục gốc của thư mục làm việc của bạn

    $ git checkout.

Điều này sẽ đệ quy kiểm tra (khôi phục) mọi tệp đang được theo dõi từ lần commit cuối cùng trong nhánh hiện tại (đầu).

2

Giả sử bạn đang ở gốc của bản sao làm việc của bạn.

Bạn muốn làm sạch để loại bỏ bất kỳ tệp nào không được theo dõi, hãy chạy khô trước để đảm bảo rằng trước tiên nó sẽ không làm được bất cứ điều gì. (Bạn có thể muốn điều tra thư mục (-d) và sử dụng các tùy chọn bỏ qua quy tắc (-x).)

git clean -n 

Sau đó chạy nó 'cho thực'.

git clean -f 

Sau đó, kiểm tra các tệp chưa sửa đổi mới từ chỉ mục cho tất cả các tệp được theo dõi của bạn.

git checkout . 
+0

Điểm tốt. +1. Tôi đã liên kết câu trả lời của bạn trong tôi. – VonC

Các vấn đề liên quan