2013-01-20 11 views
6

Thông thường, tôi thực thi git reset --hard cùng với git clean -f để dọn dẹp chi nhánh của tôi khỏi sửa đổi và tạo tệp. Lệnh này, xóa tất cả các tệp không được theo dõi, điều này phù hợp với tôi, nhưng có vài tệp tôi muốn ở lại, chẳng hạn như .project hoặc .settings (cho nhật thực)git reset - bỏ qua các tệp không được theo dõi cụ thể

Những tệp này không phải là một phần của kho lưu trữ, và được khai báo trong tệp .gitignore. là có cách nào để giữ các tệp này khi phát hành các lệnh trên, hoặc có lẽ tôi nên các lệnh khác nhau cho điều đó?

Trả lời

5

Lưu ý rằng git clean-f chỉ nên xóa các tệp không xác định thành git, không tệp bị bỏ qua.

Chỉ git clean -f -x sẽ xóa các tệp bị bỏ qua.

(trong mọi trường hợp, một git clean -n -... là tốt hơn, để có một bản xem trước của những gì sẽ được gỡ bỏ)

Ưu điểm của git reset qua git clean chủ yếu là về việc chuyển TRỤ và đặt lại index cũng như làm việc cây.
git clean chỉ là về cây làm việc.

4

git reset sẽ không chạm vào tệp bị bỏ qua. Nó hoạt động với con trỏ và chỉ mục HEAD, chủ yếu. Nhưng git clean là điều ác:

Làm sạch cây làm việc bằng cách đệ quy xóa các tệp không nằm trong kiểm soát phiên bản, bắt đầu từ thư mục hiện tại.

Vì vậy, câu trả lời là: không sử dụng git clean.