git: làm thế nào tôi có thể cấu hình git để bỏ qua thay đổi quyền truy cập tệp


21

Tôi có một số dự án git trong một máy chủ linux.

tôi sử dụng Mac và linux để lập trình. vấn đề là quyền mac hệ thống tập tin của không thực sự hoạt động tốt như thế nào trong linux vì vậy tất cả các tập tin có vẻ là trên umask 0755. nên bất cứ khi nào tôi kéo mã của tôi trên mac của tôi, git statuscho thấy tất cả các file của tôi bị thay đổi và khi tôi sử dụng git diffnó cho thấy sự thay đổi duy nhất là trong ô. Làm thế nào tôi có thể nói với git không lưu trữ và kiểm tra thay đổi umask?

cảm ơn!


1
Tôi khá chắc chắn OS X hỗ trợ các quyền theo kiểu Unix ...
grawity

1
umask và quyền không giống nhau. Bạn có chắc là bạn thực sự biết những gì bạn đang làm ở đây?
Marnen Laibow-Koser

Câu trả lời:


28

Đặt thuộc tính core.fileModecấu hình thành false. Bạn có thể làm điều này dễ dàng với lệnh này:

git config core.fileMode false

Đây có phải là cài đặt trên mỗi kho lưu trữ hay có thể thực hiện công việc này trên toàn cầu không?
acme

2
@acme: Giống như tất cả các cài đặt git, bạn có thể đặt nó cho mỗi kho lưu trữ, mỗi người dùng hoặc toàn hệ thống, bằng cách không chuyển đổi thêm --global, hoặc --system, tương ứng. Xem git help configđể biết chi tiết.
Bản vá lỗi

Cảm ơn! Nhưng cài đặt nó trên toàn cầu không tự động thêm cài đặt này vào kho lưu trữ mới, đó chỉ là cài đặt trên máy cục bộ của tôi?
acme

@acme: Yup, đặt tùy chọn có --globalảnh hưởng đến tất cả các hoạt động trên bất kỳ kho lưu trữ nào được truy cập bằng tài khoản người dùng của bạn cục bộ. Nó không ảnh hưởng đến bất cứ ai khác. Để đặt nó cho tất cả người dùng của một kho lưu trữ cụ thể, bạn phải chuyển đổi cài đặt trên mỗi kho lưu trữ trên máy chủ mà mọi người đều đẩy tới.
Bản vá lỗi

1

Tôi có một kịch bản shell nhỏ để chuyển đổi này

mèo ~ / bin / git-bỏ qua-chmod-chuyển đổi

#!/bin/bash
# Copyright 2015 Alexx Roche, MIT license.
# based on http://superuser.com/a/261076

gitCHMODstate=$(git config --get core.fileMode)

# toggle with git config core.fileMode true 

if [ $gitCHMODstate == 'true' ];then
    echo "git now ignores file mode (chmod)"
    git config core.fileMode false
else
    echo "git not looks for files modes changed with chmod"
    git config core.fileMode true
fi

Với điều này, tôi có thể chuyển đổi git, kiểm tra các thay đổi khác và sau đó nhanh chóng đưa vào lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.