Secara default di Windows Git menempatkan .gitconfig global di c:\documents and settings\user\
Bagaimana cara mengubah posisi itu sehingga .gitconfig disimpan c:\my_configuration_files\
?
Bisakah itu dilakukan sama sekali?
Secara default di Windows Git menempatkan .gitconfig global di c:\documents and settings\user\
Bagaimana cara mengubah posisi itu sehingga .gitconfig disimpan c:\my_configuration_files\
?
Bisakah itu dilakukan sama sekali?
Jawaban:
Jika Anda menyetel HOME
ke c:\my_configuration_files\
, maka git akan menemukan .gitconfig di sana. Mengedit variabel lingkungan dijelaskan di sini . Anda perlu menyetel variabel HOME, lalu buka kembali jendela cmd.exe mana pun. Gunakan perintah "set" untuk memverifikasi bahwa HOME memang menunjuk ke nilai yang benar.
Mengubah HOME tentu saja akan mempengaruhi aplikasi lain. Namun, dari membaca kode sumber git, itu tampaknya menjadi satu-satunya cara untuk mengubah lokasi file ini tanpa perlu menyesuaikan baris perintah. Anda juga harus mempertimbangkan tanggapan Stefan: Anda dapat menyetel variabel GIT_CONFIG. Namun, untuk memberikan efek yang Anda inginkan, Anda harus meneruskan --global
flag ke semua pemanggilan git (ditambah file .git / config lokal apa pun yang diabaikan).
.gitconfig
file ke direktori itu, itu tidak berhasil.
Ubah direktori HOME karena ini salah. Lebih baik buat tautan simbolik untuk gitconfig ke direktori HOME.
$HOME
ada di drive jaringan dan setiap kali ada masalah dengan koneksi jaringan, juga tautannya tidak dapat dijangkau.
Saya telah memecahkan masalah ini menggunakan pendekatan yang sedikit berbeda yang menurut saya berfungsi untuk file konfigurasi lain. Git Config mendukung include yang memungkinkan Anda mengarahkan ke file konfigurasi di lokasi lain. Lokasi alternatif itu kemudian diimpor dan diperluas seolah-olah itu adalah bagian dari file .gitconfig. Jadi sekarang saya hanya memiliki satu entri di .gitconfig:
[include]
path = c:\\path\\to\\my.config
Pembaruan apa pun yang ditulis oleh Git ke file .gitconfig tidak akan menimpa jalur penyertaan saya. Ini berarti bahwa terkadang saya mungkin perlu memindahkan nilai dari .gitconfig ke my.config.
git config --file "included.file"
Lihat di FILES dan LINGKUNGAN bagian git help config
.
Saya bukan master Git, tetapi dari mencari solusi yang paling mudah bagi saya adalah dengan C:\Program Files (x86)\Git\etc
membuka dan membuka profile
di editor teks.
Ada if
pernyataan di baris 37 # Set up USER's home directory
. Saya mengeluarkan if
pernyataan itu dan meletakkannya di direktori lokal yang saya inginkan untuk menjadi gitconfig, lalu saya baru saja menyalin file gitconfig saya yang ada (ada di drive jaringan) ke lokasi itu.
Bagi saya, mengubah lokasi Start In (setidaknya dari git-gui) tidak memengaruhi tempat pencarian .gitconfig. Pengaturan saya di tempat kerja memasang U: untuk rumah kami, tetapi kami tidak memiliki izin untuk menulis dalam U: secara langsung, hanya subdirektori yang dibuat untuk kami di dalam, jadi ini adalah pemecah kesepakatan bagi saya.
Saya memecahkan masalah dengan membuat skrip batch yang akan menimpa variabel env HOMEDRIVE dan HOMEPATH hanya untuk aplikasi itu. Kemudian ubah pintasan menu Start saya untuk menunjuk ke skrip batch itu.
Jika Anda menggunakan windows dan mengalami masalah baik mengubah variabel lingkungan atau mklink
karena hak istimewa yang tidak memadai, solusi mudah untuk masalah Anda adalah memulai git batch di lokasi lain.
Cukup klik kanan pada Git Bash.exe, klik properti dan ubah properti "Mulai di" menjadi c:\my_configuration_files\
.
%HOMEDRIVE%%HOMEPATH%
menjadi `c: \ my_repo_folder`. Menghasilkan pesona.
Saya ingin melakukan hal yang sama. Yang terbaik yang bisa saya temukan adalah solusi @ MicTech. Namun, seperti yang ditunjukkan oleh @MotoWilliams, ini tidak bertahan dari pembaruan apa pun yang dibuat oleh Git ke file .gitconfig yang menggantikan tautan dengan file baru yang hanya berisi pengaturan baru.
Saya menyelesaikan ini dengan menulis skrip PowerShell berikut dan menjalankannya di skrip startup profil saya. Setiap kali dijalankan, ia menyalin pengaturan apa pun yang telah ditambahkan ke .gitconfig pengguna ke global dan kemudian mengganti semua teks dalam file .gitconfig dengan dan header [include] yang mengimpor file global.
Saya menyimpan file .gitconfig global dalam repo bersama dengan banyak skrip dan alat global lainnya. Yang harus saya lakukan adalah mengingat untuk memeriksa setiap perubahan yang ditambahkan skrip ke file global saya.
Ini tampaknya bekerja cukup transparan bagi saya. Semoga membantu!
9 Sept: Diperbarui untuk mendeteksi ketika entri baru yang ditambahkan ke file konfigurasi merupakan duplikat dan mengabaikannya. Ini berguna untuk alat seperti SourceTree yang akan menulis pembaruan baru jika mereka tidak dapat menemukan yang sudah ada dan tidak mengikuti termasuk.
function git-config-update
{
$localPath = "$env:USERPROFILE\.gitconfig".replace('\', "\\")
$globalPath = "C:\src\github\Global\Git\gitconfig".replace('\', "\\")
$redirectAutoText = "# Generated file. Do not edit!`n[include]`n path = $globalPath`n`n"
$localText = get-content $localPath
$diffs = (compare-object -ref $redirectAutoText.split("`n") -diff ($localText) |
measure-object).count
if ($diffs -eq 0)
{
write-output ".gitconfig unchanged."
return
}
$skipLines = 0
$diffs = (compare-object -ref ($redirectAutoText.split("`n") |
select -f 3) -diff ($localText | select -f 3) | measure-object).count
if ($diffs -eq 0)
{
$skipLines = 4
write-warning "New settings appended to $localPath...`n "
}
else
{
write-warning "New settings found in $localPath...`n "
}
$localLines = (get-content $localPath | select -Skip $skipLines) -join "`n"
$newSettings = $localLines.Split(@("["), [StringSplitOptions]::RemoveEmptyEntries) |
where { ![String]::IsNullOrWhiteSpace($_) } | %{ "[$_".TrimEnd() }
$globalLines = (get-content $globalPath) -join "`n"
$globalSettings = $globalLines.Split(@("["), [StringSplitOptions]::RemoveEmptyEntries)|
where { ![String]::IsNullOrWhiteSpace($_) } | %{ "[$_".TrimEnd() }
$appendSettings = ($newSettings | %{ $_.Trim() } |
where { !($globalSettings -contains $_.Trim()) })
if ([string]::IsNullOrWhitespace($appendSettings))
{
write-output "No new settings found."
}
else
{
echo $appendSettings
add-content $globalPath ("`n# Additional settings added from $env:COMPUTERNAME on " + (Get-Date -displayhint date) + "`n" + $appendSettings)
}
set-content $localPath $redirectAutoText -force
}
Sebagai seseorang yang telah tertarik dengan hal ini sejak lama. Lihat dari manual:
$ XDG_CONFIG_HOME / git / config - File konfigurasi khusus pengguna kedua. Jika $XDG_CONFIG_HOME
tidak disetel atau kosong, $ HOME / .config / git / config akan digunakan. Setiap set variabel bernilai tunggal dalam file ini akan ditimpa oleh apa pun yang ada di ~ / .gitconfig. Sebaiknya jangan membuat file ini jika Anda terkadang menggunakan Git versi lama, karena dukungan untuk file ini baru saja ditambahkan.
Yang baru saja ditambahkan. Dump ini dari 2.15.0.
Bekerja untuk saya.
%PROGRAMFILES%\Git\etc
profile
HOME="c:\location_were_you_want_gitconfig"
Catatan: Izin file biasanya dibatasi, jadi ubahlah seperlunya atau Anda tidak akan dapat menyimpan perubahan Anda.
git config --list --show-origin
menunjukkan, HOME asli masih ada.
Bagi saya itu bekerja sangat sederhana:
Solusi tanpa harus mengubah
OS variabel Windows HOME : Windows 10
versi git: 2.27.0.windows.1
Saya menggunakan Git versi portabel, jadi semua file konfigurasi saya ada di pen-drive saya (E :). Inilah yang berhasil untuk saya:
.gitconfig
dan file bash lainnya di E , jadi saya membuat folder bernama home tempat saya ingin semuanya masuk.mkdir home
HOME="E:\git\home"
Sekarang tidak lagi mencari di direktori C: \ Users <username> untuk .gitconfig tetapi hanya melihat di jalur set Anda di atas.
$ git config --global --list
fatal: unable to read config file 'E:/git/home/.gitconfig': No such file or directory
Ini memberikan kesalahan karena belum ada file .gitconfig di sana. Ini hanya untuk menunjukkan bahwa kami telah berhasil mengubah lokasi file .gitconfig tanpa mengubah direktori HOME di Windows.