Saya perhatikan bahwa saya memiliki dua daftar untuk core.autocrlf
saat saya menjalankangit config -l
$ git config -l
core.symlinks=false
core.autocrlf=false
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=name
[email protected]
core.autocrlf=true
Tiga yang terakhir (dari user.name ke bawah) adalah satu-satunya yang ada di C:\users\username\.gitconfig
file saya . Dari mana semua yang lainnya berasal? Mengapa core.autocrlf terdaftar dua kali?
Ini dengan MSysGit 1.8.3, dan saya juga telah menginstal Sourcetree (Windows 7). Di Sourcetree saya telah menghapus centang pada "Izinkan Sourcetree untuk mengubah file konfigurasi Git global Anda"
git
msysgit
git-config
RyanW
sumber
sumber
git config --list --show-origin
, Anda tidak perlu menebak konfigurasi git mana. Lihat jawaban saya di bawah iniJawaban:
Git memeriksa empat tempat untuk file konfigurasi:
.gitconfig
File sistem mesin Anda ..gitconfig
File pengguna Anda terletak di~/.gitconfig
.$XDG_CONFIG_HOME/git/config
atau$HOME/.config/git/config
..git/config
.Pengaturan bertingkat dalam urutan berikut, dengan setiap file menambahkan atau mengganti pengaturan yang ditentukan dalam file di atasnya.
Anda dapat melihat apa yang telah ditentukan setiap file menggunakan perintah berikut:
# System, applies to entire machine and all users $ git config --system --list $ git config --system --edit # User defined $ git config --global --list $ git config --global --edit
Anda dapat melihat apa yang baru saja didefinisikan oleh file khusus repositori dengan membuka file
.git/config
untuk repositori itu.Jika Anda menggunakan MSysGit di Windows, Anda mungkin akan menemukan
~/.gitconfig
file pengguna Anda di mana pun%homepath%
jika Anda menggunakanecho %homepath%
dari prompt perintah Windows.Dari dokumentasi untuk
git config
:sumber
.gitconfig
file sistem mesin " saat di Windows dengan msysgit?C:\Program Files (x86)\Git\etc\gitconfig
. Tidak yakin apakah itu yang benar.C:\Program Files\Git\mingw64\etc\gitconfig
C:\Program Files\Git\etc\gitconfig
Anda tidak perlu lagi menebak-nebak konfigurasi mana yang telah disetel ke mana, dengan git 2.8! (Maret 2016)
Lihat commit 70bd879 , commit 473166b , commit 7454ee3 , commit 7454ee3 (19 Feb 2016), commit 473166b , commit 7454ee3 (19 Feb 2016), commit 7454ee3 (19 Feb 2016), dan commit a0578e0 (17 Feb 2016) oleh Lars Schneider (
larsxschneider
) .(Digabung oleh Junio C Hamano -
gitster
- di commit dd0f567 , 26 Feb 2016)The
git config
halaman manual sekarang akan menunjukkan:Sebagai contoh:
Itu akan menghasilkan:
Untuk satu pengaturan, seperti yang dikomentari oleh wisbucky :
Dengan Git 2.26 (Q1 2020), Anda dapat menambahkan
--show-scope
opsi :sumber
user.cmdline=true
diperlukan untuk--show-origin
bekerja? Juga, saya perhatikan bahwa--show-origin
perlu segera setelahconfig
untuk bekerja dengan--get
dan--get-all
. Jadi seharusnya... config --show-origin --get-all core.autocrlf
-c 'user.cmdline=true'
bit, yang tampaknya mengacu pada cakupan pengujian: github.com/git/git/blob/…user.cmdline=true
diperlukan di Git 2.13, tetapi tidak lagi diperlukan di Git 2.15.Setelah sebelumnya menginstal Git untuk Windows dan kemudian menghapusnya, saya menemukan bahwa ada file konfigurasi yang diinstal
C:\Users\All Users\Git\config
yang merupakan file konfigurasi tingkat sistem yang tetap ada dan akan memengaruhi paket MinGW32 Git di masa mendatang (dalam kasus saya, saya menjalankan MinGW32 portabel Paket Git disediakan oleh perusahaan saya). Saat aku lariitu akan menunjukkan kepada saya file konfigurasi sistem yang terletak di
mingw32/etc/gitconfig
, tetapi masih akan memuat nilai-nilai dari lokasi pertama juga. Ini muncul sebagai peringatan bahwa nilai konfigurasi bentrok saat mencoba menggunakan Git LFS .(Catatan: ini mungkin juga merupakan situasi di mana peringatan LFS terlalu tegas, # 861 )
sumber
Anda dapat menggunakan
--show-origin
untuk mengetahui dari mana konfigurasi itu berasal.Prioritas file konfigurasi di Git untuk Windows:
Sumber: https://github.com/git-for-windows/git/blob/master@%7B2018-01-07%7D/Documentation/git-config.txt#L231
$PROGRAMDATA
adalah variabel lingkungan. Anda bisa mendapatkan nilai variabel tersebut seperti ini:Di Git Bash Anda perlu menggunakan
echo "$ProgramData"
. Di CMD, Anda perlu menggunakanecho %PROGRAMDATA%
. Perhatikan bahwa Git Bash tampaknya berpura-pura bahwa variabel lingkungan peka huruf besar kecil.Apa
$(prefix)
?Awalan adalah direktori tingkat atas tempat hal-hal diinstal. Di Git untuk Windows, itu adalah
<some-path>/mingw64
atau<some-path>/mingw32
.sumber
git config -l
menunjukkan semua nilai yang diwarisi dari sistem, global, dan lokal.Jadi, Anda memiliki file konfigurasi lain di suatu tempat yang sedang dimuat bersama dengan
.gitconfig
file yang ditentukan pengguna Anda .sumber
Jawaban lengkap untuk Windows (yaitu versi Windows dari jawaban yang diterima):
Seperti Linux, Windows memiliki empat tingkat file konfigurasi / pengaturan dan tiga yang setara langsung. Hal penting untuk diperhatikan adalah yang lain - yang 'Semua Aplikasi / Pengguna' - terutama karena di sinilah penginstal menetapkan nilai, misalnya 'core.autocrlf = true', namun tidak dapat diakses dari baris perintah sehingga menyebabkan kebingungan.
Semua Aplikasi dan Pengguna
Ini seperti versi bersama dari pengaturan 'sistem' jika Anda memiliki beberapa aplikasi Git yang diinstal. Tidak ada perintah 'git config' untuk mengaksesnya, tetapi perintah tersebut masih memengaruhi hasil bersih untuk suatu pengaturan.
Lokasi file konfigurasi:
C: \ ProgramData \ Git \ config
(Perhatikan bahwa 'ProgramData' adalah 'Semua Pengguna' di versi Windows yang lebih lama.)
Sistem
Lokasi file konfigurasi: C: / Program Files / Git / mingw64 / etc / gitconfig
Pengguna
Lokasi file konfigurasi:% USERPROFILE% .gitconfig (Ini memutuskan 'C: / Users / <username>')
Gudang
Lokasi file konfigurasi: [direktori repositori saat ini] /. Git / config
sumber
Selain itu
git config -l --show-origin
, yang saya sajikan di sini , dengan git 2.8 (Maret 2016), Anda sekarang memiliki, dengan Git 2.26 (Q1 2020)git config
belajar untuk menunjukkan dari mana "scope
", selain dari file mana, setiap pengaturan konfigurasi berasal.Lihat commit 145d59f , commit 9a83d08 , commit e37efa4 , commit 5c105a8 , commit 6766e41 , commit 6dc905d , commit a5cb420 (10 Feb 2020), dan commit 417be08 , commit 3de7ee3 , commit 329e6ec (24 Jan 2020) by Matthew Rogers (
ROGERSM94
) .(Digabung oleh Junio C Hamano -
gitster
- di commit 5d55554 , 17 Feb 2020)Contoh:
sumber
Di Windows 7 (mungkin sama atau serupa untuk Windows 10), untuk Visual Studio dan baris perintah Git, konfigurasi global Anda ada di:
(titik di depan nama file)
Tapi ini tidak diterima oleh Sourcetree, setidaknya dalam mode Git Embedded, dan konfigurasinya ada di:
(tidak ada titik di depan nama file)
(Saya perlu memperbarui kedua file untuk mengubah pengaturan Git global saya untuk perintah Git dan Sourcetree.)
Bagian menyenangkan lainnya. Konfigurasi Git hooks bekerja dari
AppData\Local\...
lokasi, tetapi setelah penelitian lebih lanjut melalui Process Monitor , saya perhatikan entah bagaimana Sourcetree juga memuat global dari drive yang dipetakan perusahaan untuk pengguna saya.Ini sangat tidak masuk akal karena sangat sedikit aplikasi yang mencari lokasi ini, tetapi entah bagaimana Sourcetree melakukannya, jadi jika Anda tidak dapat membuatnya bekerja per pengaturan lokasi di Sourcetree, jalankan Monitor Proses dan buat aturan untuk hanya mencatat jalur yang berisi gitconfig, dan Anda dapat menemukan di mana sebenarnya konfigurasi global Anda dalam kasus direktori pengguna yang dipetakan jaringan.
Dan ini bahkan mungkin bukan kesalahan Sourcetree, seperti yang saya lihat sekarang ketika saya menulis ini bahwa git.exe memuat itu, tetapi ini hanya terjadi untuk git.exe yang dieksekusi oleh Sourcetree, sementara baris perintah langsung yang digunakan Git
%USERPROFILE%\.gitconfig
Akhirnya saya mengambil semua hasil dari Monitor Proses, memasukkannya ke SQL Server dan menjalankan kueri untuk mendapatkan hasil yang berbeda (tidak ada urutan eksekusi tertentu yang hanya diurutkan berdasarkan jalur):
Saya tidak tahu bagaimana konfigurasi tersebut berhubungan satu sama lain, tetapi saya tahu beberapa menimpa yang lain beberapa pengaturan berfungsi dari satu lokasi beberapa dari yang lain.
Dan daftar di atas dipanggil oleh Sourcetree , sekali lagi mengarahkan baris perintah dengan Git tampaknya berfungsi dengan baik
%USERPROFILE%\.gitconfig
, dan itu tidak ada dalam daftar ini, tetapi akan terlihat seperti ini (di Windows 7)C:\Users\pawel.cioch\.gitconfig
sumber
Jika Anda ingin mencari lokasi file sebenarnya, itu ada di direktori home Anda.
Itu tersembunyi dan didahului dengan ".".
Jadi, jika Anda menggunakan Mac, di terminal Anda, Anda dapat
cd ~ && open .gitconfig
atau membukanya dengan editor teks favorit Anda, miscd ~ && atom .gitconfig
.sumber