2015-09-29 17 views
13

Tôi đã đọc tài liệu Git và Where do the settings in my Git configuration come from? nhưng tôi vẫn không thể hiểu được một số cài đặt của mình.Cài đặt cấu hình Git dành riêng cho Windows; chúng được đặt ở đâu?

Tôi đang trên Git 2.5.3 trên Windows 10. Dưới đây là kết quả của git config -l:

λ git config -l 
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/Git/mingw64/ssl/certs/ca-bundle.crt 
sendemail.smtpserver=/bin/msmtp.exe 
diff.astextplain.textconv=astextplain 
rebase.autosquash=true 
user.name=Ben Collins 
user.email=#redacted# 
alias.sm=submodule 
alias.br=branch 
alias.co=checkout 
alias.st=status 
alias.rebuild=!git rm --cached -r . && git reset --hard 
core.excludesfile=C:\Users\Benjamin\Documents\gitignore_global.txt 
core.editor=c:/Users/Benjamin/AppData/Local/atom/bin/atom.cmd 
core.attributesfile=C:\Users\Benjamin\.gitattributes 
push.default=simple 
merge.tool=p4merge 
mergetool.p4merge.cmd=p4merge.exe "$BASE" "$LOCAL" "$REMOTE" "$MERGED" 
mergetool.p4merge.path=C:/Program Files/Perforce/p4merge.exe 
gui.encoding=utf-8 
diff.guitool=p4merge 
difftool.p4merge.path=C:/Program Files/Perforce/p4merge.exe 
difftool.p4merge.cmd=p4merge.exe "$LOCAL" "$REMOTE" 
mergetool.keepbackup=false 
rerere.enabled=true 
credential.helper=!'C:\Users\Benjamin\AppData\Roaming\GitCredStore\git-credential-winstore.exe' 
filter.lfs.clean=git lfs clean %f 
filter.lfs.smudge=git lfs smudge %f 
filter.lfs.required=true 
color.diff.whitespace=red reverse 

Có gì khó chịu là mười hai cài đặt đầu tiên tôi không thể tìm thấy bất cứ nơi nào .

C:\Program Files\Git 
λ git config --system --list 
fatal: unable to read config file 'C:\Program Files\Git\mingw64/etc/gitconfig': No such file or directory 
C:\Program Files\Git 
λ git config --global --list 
user.name=Ben Collins 
user.email=#redacted# 
alias.sm=submodule 
alias.br=branch 
alias.co=checkout 
alias.st=status 
alias.rebuild=!git rm --cached -r . && git reset --hard 
core.excludesfile=C:\Users\Benjamin\Documents\gitignore_global.txt 
core.editor=c:/Users/Benjamin/AppData/Local/atom/bin/atom.cmd 
core.attributesfile=C:\Users\Benjamin\.gitattributes 
push.default=simple 
merge.tool=p4merge 
mergetool.p4merge.cmd=p4merge.exe "$BASE" "$LOCAL" "$REMOTE" "$MERGED" 
mergetool.p4merge.path=C:/Program Files/Perforce/p4merge.exe 
gui.encoding=utf-8 
diff.guitool=p4merge 
difftool.p4merge.path=C:/Program Files/Perforce/p4merge.exe 
difftool.p4merge.cmd=p4merge.exe "$LOCAL" "$REMOTE" 
mergetool.keepbackup=false 
rerere.enabled=true 
credential.helper=!'C:\Users\Benjamin\AppData\Roaming\GitCredStore\git-credential-winstore.exe' 
filter.lfs.clean=git lfs clean %f 
filter.lfs.smudge=git lfs smudge %f 
filter.lfs.required=true 
color.diff.whitespace=red reverse 

Ngoài ra, khi tôi cố gắng để bỏ đặt một trong mười hai cài đặt đầu tiên, nó không có hiệu lực:

C:\Users\Benjamin\Projects\blah [master +0 ~1 -0] 
λ git config --unset core.autocrlf 
C:\Users\Benjamin\Projects\blah [master +0 ~1 -0] 
λ git config core.autocrlf 
true 
C:\Users\Benjamin\Projects\Saddleback\cm-core [master +0 ~1 -0] 
λ git config --unset-all core.autocrlf 
C:\Users\Benjamin\Projects\Saddleback\cm-core [master +0 ~1 -0] 
λ git config core.autocrlf 
true 

có mười hai cài đặt đầu tiên hardcoded hoặc nền tảng cụ thể bằng cách nào đó? Làm cách nào để kiểm soát chúng?

+0

Trợ giúp này: http://stackoverflow.com/q/2114111/1190388? – hjpotter92

+0

@ hjpotter92, không - đây không phải là về cấu hình chung (trong $ HOME/.gitconfig). Tôi đã có một xử lý khá tốt về điều đó. Dường như cài đặt cấu hình cơ bản được tải theo thứ tự, vì vậy có gì đó đang được tải _before_ cấu hình chung, nhưng cấu hình hệ thống không tồn tại. Điều đó và thực tế là tôi không thể bỏ đặt những thiết lập đó là bí ẩn. –

+2

Đó có thể là cài đặt mặc định của Git cho các cài đặt phải được đặt thành thứ gì đó. Thay vì hủy đặt chúng, bạn có thể thử đặt chúng thành thứ gì khác không, ví dụ: 'git config core.autocrlf false'? Nếu nó hoạt động, và sau đó bạn bỏ đặt 'core.autocrlf', nó có quay lại' true' không? – Chris

Trả lời

22

Như this commit giải thích, họ đã thêm một vị trí cấu hình chỉ dành cho Windows, được áp dụng ngay cả trước khi --system:

File /etc/gitconfig thể được sử dụng để lưu trữ một cấu hình toàn hệ thống mặc định . Trên Windows, cấu hình cũng có thể được lưu trữ trong C:\ProgramData\Git\config; Tệp này cũng sẽ được sử dụng bởi phần mềm dựa trên libgit2.

...

Trên Windows, như không có /etc/ thư trung ương, có được nêu ra là một tập tin cấu hình, thiết kế để chứa các thiết lập 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 đó, cấu hình này tệp có độ ưu tiên thậm chí thấp hơn so với tệp $(prefix)/etc/gitconfig .

Vì vậy, tôi tin rằng bạn có thể tìm thấy các cài đặt bí ẩn đó trong C:\ProgramData\Git\config.


Từ đó cam kết tôi có thể thấy rằng git config --system --list nên đã cho các bạn những thiết lập, nhưng có vẻ như sự vắng mặt của C:\Program Files\Git\mingw64/etc/gitconfig tập tin bị hủy bỏ hoạt động, mà có lẽ là một lỗi.

+0

Brilliant, cảm ơn bạn! –

+0

Câu trả lời này không có gần như bao nhiêu upvotes nó xứng đáng :) PS. Tôi có tập tin hệ thống gitconfig nhưng tôi không thấy bất cứ điều gì khác trên git config - system --list khác với những gì có trong tập tin đó (tôi không thấy tập tin programdata cũng ẩn) –

5

Trong phiên bản git của tôi, có một chuyển đổi --show-origin trên lệnh danh sách cho phép áp dụng cài đặt từ đâu. Tôi đồng ý rằng nó gây nhầm lẫn rằng không có chuyển đổi được cung cấp để truy cập vào vị trí cấu hình cửa sổ bên trong ProgramData.

C:\Users\karlb>git --version 
git version 2.11.0.windows.3 

C:\Users\karlb>git config --list --show-origin 
file:"C:\\ProgramData/Git/config"  core.symlinks=false 
file:"C:\\ProgramData/Git/config"  core.autocrlf=true 
file:"C:\\ProgramData/Git/config"  core.fscache=true 
file:"C:\\ProgramData/Git/config"  color.diff=auto 
file:"C:\\ProgramData/Git/config"  color.status=auto 
file:"C:\\ProgramData/Git/config"  color.branch=auto 
file:"C:\\ProgramData/Git/config"  color.interactive=true 
file:"C:\\ProgramData/Git/config"  help.format=html 
file:"C:\\ProgramData/Git/config"  http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt 
file:"C:\\ProgramData/Git/config"  diff.astextplain.textconv=astextplain 
file:"C:\\ProgramData/Git/config"  rebase.autosquash=true 
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig" credential.helper=manager 
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig" difftool.usebuiltin=true 
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig" alias.lol=log --oneline --graph 
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig" alias.last=log -1 HEAD 
file:C:/Users/karlb/.gitconfig [email protected] 
file:C:/Users/karlb/.gitconfig user.name=Karl Horton 
Các vấn đề liên quan