2012-01-12 30 views
20

Tôi đã di chuyển một loạt kho lưu trữ git của mình sang một hệ điều hành khác bằng cách sao chép sang một ổ đĩa gắn ngoài. Và bây giờ khi tôi làm git diff nó báo cáo tất cả các chế độ tập tin đã thay đổi.thay đổi chế độ báo cáo khác của git sau khi di chuyển kho lưu trữ

diff --git a/.gitignore b/.gitignore 
old mode 100644 
new mode 100755 
diff --git a/.npmignore b/.npmignore 
old mode 100644 
new mode 100755 
diff --git a/.travis.yml b/.travis.yml 
old mode 100644 
new mode 100755 
diff --git a/LICENSE b/LICENSE 
old mode 100644 
new mode 100755 
diff --git a/README.md b/README.md 
old mode 100644 
new mode 100755 

Tôi thực sự không biết nhiều về quyền đối với tệp, tôi phải làm gì về điều này?

Cam kết thay đổi chế độ? Thay đổi chế độ trở lại cho tất cả các tệp không thực thi được? git reset?

+0

HĐH nào và HĐH nào? –

+0

Xubuntu đến Crunchbang Linux – fent

Trả lời

11

Có lẽ ổ đĩa cứng bên ngoài của bạn có một hệ thống tệp khác trên đó không tôn trọng quyền của tệp gốc. Tôi chỉ cần sửa chúng bằng tay trước khi cam kết.

Ví dụ: FAT32, thường được sử dụng trên ổ USB, không hỗ trợ quyền thực thi. Khi bạn sao chép tệp từ hệ thống tệp FAT32 sang hệ thống tệp giống Unix bình thường, nó thường đặt quyền thực thi cho tất cả các tệp, vì điều đó ít gây tổn hại hơn việc tắt nó cho tất cả các tệp.

Nếu bạn muốn giữ lại loại thông tin đó, đừng sao chép tệp trực tiếp vào ổ đĩa; thay vào đó, tạo một tập tin tar (tùy chọn nén) và sau đó giải nén nó ở đầu kia. Định dạng tar không theo dõi các bit cho phép của Unix.

Lưu ý rằng chính git không theo dõi nhiều hơn so với thực thi và không thực thi được. Nếu thay đổi chế độ là sự khác biệt duy nhất và bạn không muốn sao chép lại mọi thứ, bạn có thể biến đầu ra của git diff thành tập lệnh thực hiện chmod -x trên tất cả các tệp bị ảnh hưởng.

+0

NẾU đó là trường hợp, tôi sẽ chỉ chuyển lại chúng theo một cách khác. Tôi đang suy nghĩ nén mọi thứ vào một tập tin. Không có cách nào tôi sửa tất cả các tập tin đó bằng tay. – fent

+0

Hoặc định dạng lại đĩa ngoài của bạn bằng hệ thống tệp thông minh hơn. FS là gì bạn sẽ đi từ/đến và đĩa ngoài được định dạng là gì? –

+1

từ/đến: ext4, external: ntfs – fent

39

Bạn có thể áp dụng thiết

git config core.filemode false

gây git này để bỏ qua những khác biệt về tập tin-mode.

Giải pháp này được tìm thấy trong câu trả lời của @ kan cho another question

+1

@ DeaDEnD này nên được đánh dấu là câu trả lời đúng IMO, có lẽ đáng nói đến trong Q? –

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