2015-12-05 13 views
13

On Git 2.6.3 trên Windows, tại sao kết quả lệnh này:danh sách cấu hình Tại sao Git (tổng cộng) là không giống như hệ thống + toàn cầu + địa phương

git config --list 

Không giống như những người khác này:

git config --list --system 
git config --list --global 
git config --list --local 

Người đầu tiên có thêm một vài tùy chọn được liệt kê hơn tổng số các tùy chọn khác. Tôi đã chuyển hướng đến các tập tin và kdiff so sánh và có sự khác biệt.

Theo yêu cầu này là các giá trị có trong git config --list và không có trong hệ thống/toàn cầu/local theo nhóm:

core.symlinks=false 
core.autocrlf=true 
color.diff=auto 
color.status=auto 
color.branch=auto 
color.interactive=true 
pack.packsizelimit=2g 
help.format=html 
http.sslcainfo=C:/Program Files (x86)/Git/mingw32/ssl/certs/ca-bundle.crt 
sendemail.smtpserver=/bin/msmtp.exe 
diff.astextplain.textconv=astextplain 
rebase.autosquash=true 

đâu mà cấu hình trích dẫn ở trên (không có trong hệ thống/toàn cầu/local) giá trị cứu?

+4

Bạn có thể chia sẻ sự khác biệt giữa các tệp không? – Whymarrh

Trả lời

15

TL; DR: C:\Users\All Users\Git\config.
Xem git-for-windows PR 470

Trên Windows, như không có trung tâm /etc/ thư mục, có thêm một tập tin cấu hình (nằm ở %PROGRAMDATA%\Git\config), nhằm chứa cài đặt cho tất cả các phần mềm Git liên quan đến chạy trên máy tính này .
Do đó, tệp cấu hình này thậm chí còn được ưu tiên thấp hơn so với tệp $(prefix)/etc/gitconfig.

Bạn có thể kiểm tra xem (với 2.8+ git, March 2016), bằng cách gõ

git config --list --show-origin 

Xem "Where do the settings in my Git configuration come from?"


Như đã đề cập trong git config FILES, git đang tìm kiếm các giá trị (hoặc các giá trị mặc định nếu không tìm thấy) của các cấu hình ở 3 địa điểm (ngoài chính git repo)

$(prefix)/etc/gitconfig 

Tệp cấu hình trên toàn hệ thống.

$XDG_CONFIG_HOME/git/config 

tập tin cấu hình do người dùng cụ thể thứ hai.
Nếu $XDG_CONFIG_HOME không được đặt hoặc để trống, $HOME/.config/git/config sẽ được sử dụng. Bất kỳ biến có giá trị nào được đặt trong tệp này sẽ bị ghi đè bởi bất kỳ thứ gì trong số ~/.gitconfig. Bạn nên tạo tệp này nếu đôi khi bạn sử dụng các phiên bản cũ hơn của Git, vì hỗ trợ cho tệp này đã được thêm khá gần đây.

~/.gitconfig 

tập tin cấu hình người dùng cụ thể. Còn được gọi là tệp cấu hình "toàn cầu".

Nhưng một quick process monitor đề cập đến một phần tư nơi (một lần nữa, bên ngoài một repo git tự)

programdata

Trong C:\ProgramData\Git, tôi thấy các giá trị bổ sung:

C:\ProgramData\Git>more config 
[core] 
     symlinks = false 
     autocrlf = true 
[color] 
     diff = auto 
     status = auto 
     branch = auto 
     interactive = true 
[pack] 
     packSizeLimit = 2g 
[help] 
     format = html 
[http] 
     sslCAInfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt 
[sendemail] 
     smtpserver = /bin/msmtp.exe 

[diff "astextplain"] 
     textconv = astextplain 
[rebase] 
     autosquash = true 

Như được đề cập trong "What is the significance of the ProgramData folder in Windows?", thư mục đó là thư mục từ All Users:

C:\Users\All Users\Git>dir 
Volume in drive C has no label. 

Directory of C:\Users\All Users\Git 

23/10/2015 16:36 <DIR>   . 
23/10/2015 16:36 <DIR>   .. 
23/10/2015 16:36    350 config 
0

Git đọc giá trị từ ba tệp cấu hình khác nhau.

  1. Hệ thống - Giá trị cấu hình trong tệp này được áp dụng cho tất cả người dùng trên máy.
  2. Toàn cầu - Giá trị cấu hình trong tệp này được áp dụng cho một người dùng. Tệp này nằm ở '~/.gitconfig'. Tệp này có thể được sử dụng để ghi đè lên giá trị cấu hình được đặt bởi tệp cấu hình hệ thống.
  3. Địa phương - Các giá trị trong tệp này áp dụng cho một kho lưu trữ duy nhất. Tệp này nằm ở '.git/config'. Tập tin này có thể được sử dụng để ghi đè lên các giá trị cấu hình được thiết lập bởi các tập tin cấu hình toàn cầu và hệ thống.

Ví dụ, bạn cấu hình git của bạn cài đặt để sử dụng địa chỉ email của bạn

git config --global user.email [email protected] 

Bây giờ bạn đang làm việc trên một dự án. Dự án cụ thể này yêu cầu bạn sử dụng địa chỉ email khác [email protected] Nhưng tất cả các dự án khác vẫn sử dụng [email protected] Bạn có thể đặt địa chỉ email cho một kho lưu trữ cụ thể sử dụng

git config --local user.email [email protected] 

Git đọc cả ba tập tin cấu hình và kết hợp các giá trị cấu hình từ tất cả các file để đưa ra các thiết lập cuối cùng của giá trị cấu hình. Nếu git không tìm thấy giá trị cho các biến cấu hình git bắt buộc trong tập hợp các giá trị cấu hình cuối cùng, thì nó sẽ sử dụng giá trị nội bộ mặc định cho các biến.

+0

Vui lòng đọc lại câu hỏi và câu trả lời đã chọn. Nó rất hữu ích. – ferpega

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