2009-08-08 3 views
12

tôi đã làm git clone git: //foo.git cd foo ... chỉnh sửa tập tin .. làm thế nào tôi có thể git clone git: //foo.git AGAIN?

bây giờ tôi muốn bắt đầu tươi. Tôi không quan tâm đến bất kỳ thay đổi nào tôi đã thực hiện, nhưng tôi không muốn sao chép toàn bộ foo.git khổng lồ nữa, chỉ mất tất cả thay đổi của tôi. làm thế nào tôi có thể git clone git: //foo.git lần thứ hai, mà không cần phải fatal: destination path 'foo' already exists and is not an empty directory. lệnh thích hợp là gì?

Trả lời

2

Để trở lại tất cả các thay đổi của bạn, sử dụng:

git checkout . 

file không được theo dõi (file ban đầu không tồn tại trong cây, những người bạn đã tạo và không thay đổi nội dung) sẽ không được gỡ bỏ, mặc dù. Để tìm các tệp không được theo dõi, hãy sử dụng:

git status 

Sau đó xóa chúng theo cách thủ công.

Nhân tiện, nếu bạn muốn tạo một bản sao của repo, bạn không cần phải sao chép bản gốc, bạn có thể đơn giản sao chép bản sao bạn đã có trên đĩa cứng của mình. Đi đâu đó bên ngoài foo, và làm:

git clone /path/to/foo 
9
git checkout . # revert your changes 
git clean -xdf # delete untracked and ignored files 
+1

đẹp ~! Tôi không biết về 'sạch sẽ'! –

+5

Lưu ý: git checkout. rõ ràng sẽ không hoạt động nếu bạn không ở trong đầu repo của bạn. 'git reset --hard' sẽ hoạt động phổ biến. – Cascabel

2

Bạn có thể sử dụng "git checkout." hoặc "git checkout HEAD -." hoặc thậm chí "git reset --hard HEAD" để đặt lại khu vực làm việc của bạn thành trạng thái đã biết (trạng thái được ghi trong chỉ mục trong trường hợp đầu tiên, để ghi lại trong cam kết CHÍNH trong trường hợp thứ hai và thứ ba) .

Để xóa các tệp không được theo dõi bạn không muốn giữ, bạn có thể sử dụng "git clean" (xem documentation for details).

Để nhận thay đổi mới từ kho lưu trữ từ xa mà bạn đã sao chép, hãy sử dụng "git fetch" (hoặc tương đương "git remote update", sau khi thiết lập) hoặc "git pull" (để tìm nạp thay đổi hợp nhất).

-2

Bạn cũng có thể luôn luôn sử dụng

rm -rf * 
git checkout master 

Ít lệnh để nhớ :)

+0

Điều đó không có tác dụng nếu chủ nhân đã chứa các cam kết cục bộ vì chúng vẫn ở đó. –

0

Nếu bạn thực sự vít nó lên:

git clean -df 
git reset --hard HEAD