Những thay đổi nào git diff
hiển thị trên tệp? Trên windows, tôi đã thấy các vấn đề với phần cuối dòng gây ra các vấn đề như thế này. Trong trường hợp đó, hãy xem bạn có cài đặt nào git config core.autocrlf
và git config core.safecrlf
. Có một số tài liệu cho các cài đặt này ở đây .
Tôi sẽ nói, nếu bạn đang sử dụng git svn
để tích hợp với lật đổ, thì hãy đảm bảo rằng bạn autocrlf
đã tắt. Từ những gì tôi có thể nói, nó chỉ bị hỏng trong cấu hình này và nó làm cho hầu hết các công cụ nghĩ rằng các tệp đã bị thay đổi, khi bạn đã checkout
hoàn nguyên mọi thay đổi.
Nếu bạn gặp sự cố ở nơi bạn làm git checkout
, sau đó git status
hiển thị tệp vẫn được sửa đổi và git diff
hiển thị tệp đã được sửa đổi trên mọi dòng trong tệp, thì đây là sự cố bạn đang gặp phải.
core.autocrlf
Nếu đúng, hãy làm cho git chuyển đổi CRLF ở cuối dòng trong tệp văn bản thành LF khi đọc từ hệ thống tệp và chuyển đổi ngược lại khi ghi vào hệ thống tệp. Biến có thể được đặt thành đầu vào, trong trường hợp đó, chuyển đổi chỉ xảy ra khi đọc từ hệ thống tệp nhưng tệp được ghi bằng LF ở cuối dòng. Hiện tại, những đường dẫn nào để xem xét "văn bản" (tức là phải tuân theo cơ chế autocrlf) được quyết định hoàn toàn dựa trên nội dung.
core.safecrlf
Nếu đúng, hãy kiểm tra git xem việc chuyển đổi CRLF do core.autocrlf điều khiển có thể hoàn nguyên được hay không. Git sẽ xác minh xem một lệnh sửa đổi một tệp trong cây công việc trực tiếp hoặc gián tiếp. Ví dụ: cam kết một tệp sau đó kiểm tra cùng một tệp sẽ mang lại tệp gốc trong cây công việc. Nếu đây không phải là trường hợp cài đặt hiện tại của core.autocrlf, git sẽ từ chối tệp. Biến có thể được đặt thành "cảnh báo", trong trường hợp này, git sẽ chỉ cảnh báo về một chuyển đổi không thể đảo ngược nhưng vẫn tiếp tục hoạt động. ...
git checkout HEAD -- index.htm
(đăng xuất từ trạng thái đã cam kết cuối cùng, thay vì đăng xuất từ chỉ mục) có hoạt động không?