Windows Git varsayılan olarak global .gitconfig'i c:\documents and settings\user\
.Gitconfig’in depolanması için bu konumu nasıl değiştirebilirim c:\my_configuration_files\
?
Hiç yapılabilir mi?
Windows Git varsayılan olarak global .gitconfig'i c:\documents and settings\user\
.Gitconfig’in depolanması için bu konumu nasıl değiştirebilirim c:\my_configuration_files\
?
Hiç yapılabilir mi?
Yanıtlar:
Eğer ayarlarsanız HOME
için c:\my_configuration_files\
, o git orada .gitconfig bulacaktır. Ortam değişkenlerinin düzenlenmesi burada açıklanmaktadır . HOME değişkenini ayarlamanız ve ardından herhangi bir cmd.exe penceresini yeniden açmanız gerekir. HOME'un gerçekten doğru değeri gösterdiğini doğrulamak için "set" komutunu kullanın.
HOME'un değiştirilmesi elbette diğer uygulamaları da etkileyecektir. Bununla birlikte, git'in kaynak kodunu okumak, bu dosyaların konumunu komut satırını ayarlamaya gerek kalmadan değiştirmenin tek yolu gibi görünüyor. Stefan'ın cevabını da dikkate almalısınız: GIT_CONFIG değişkenini ayarlayabilirsiniz. Ancak, ona istediğiniz etkiyi vermek için --global
bayrağı tüm git çağrılarına iletmeniz gerekir (artı tüm yerel .git / config dosyaları göz ardı edilir).
.gitconfig
dosyayı bu dizine taşıdığımda işe yaramadı.
Bunun için HOME dizinini değiştirin yanlış. Daha iyisi gitconfig için HOME dizinine sembolik bağlantı oluşturmaktır.
$HOME
bir ağ sürücüsü üzerindedir ve ağ bağlantısıyla ilgili herhangi bir sorun olduğunda, bağlantıya da erişilemez.
Bu sorunu, diğer yapılandırma dosyaları için çalıştığını gördüğüm biraz farklı bir yaklaşım kullanarak çözdüm. Git Config , başka bir konumdaki bir yapılandırma dosyasına işaret etmenize olanak tanıyan içerir . Bu alternatif konum daha sonra içe aktarılır ve .gitconfig dosyasının bir parçasıymış gibi yerinde genişletilir. Şimdi .gitconfig dosyasında tek bir girişim var:
[include]
path = c:\\path\\to\\my.config
Git tarafından .gitconfig dosyasına yazılan güncellemeler, içerme yolumun üzerine yazılmaz. Bu, zaman zaman değerleri .gitconfig'den my.config'e taşımam gerekebileceği anlamına geliyor.
git config --file "included.file"
Bak DOSYALAR ve ÇEVRE bölümünde git help config
.
Ben hiçbir Git usta değilim, ama benim için en kolay çalıştı çözüm etrafında arama sadece gitmek oldu C:\Program Files (x86)\Git\etc
ve açık profile
bir metin editörü.
if
37. satırda bir açıklama var # Set up USER's home directory
. Ben çıkardı if
tablosu ve bu konuma Sonra sadece benim varolan gitconfig dosyasını kopyalanan (ağ sürücüsünde olduğu), olmak gitconfig istediğini yerel dizine koydu.
Benim için Başlangıç konumunu (en azından git-gui'nin) değiştirmek, .gitconfig'in nerede arandığını etkilemedi. İş yerindeki kurulumum U: evimiz için, ancak U: doğrudan yazma iznimiz yok, sadece bizim için içeride oluşturulmuş alt dizinler, bu yüzden bu benim için bir anlaşma bozdu.
HOMEDRIVE ve HOMEPATH env değişkenlerini sadece o uygulama için geçersiz kılacak bir toplu komut dosyası oluşturarak sorunu çözdüm. Ardından, Başlat menüsü kısayolumu bunun yerine bu toplu komut dosyasını işaret edecek şekilde değiştirdim.
Windows'taysanız ve ortam değişkenlerini değiştirmede veya mklink
yetersiz ayrıcalıklardan dolayı sorun yaşıyorsanız, sorununuz için kolay bir çözüm git batch'i başka bir yerde başlatmaktır.
Git Bash.exe'ye sağ tıklayın, özellikleri tıklayın ve "Başlama yeri" özelliğini olarak değiştirin c:\my_configuration_files\
.
%HOMEDRIVE%%HOMEPATH%
"c: \ my_repo_folder " olarak değiştirildi . Büyüdü.
Ben de aynı şeyi yapmak istedim. Bulabildiğim en iyi @ MicTech'in çözümüydü. Ancak, @MotoWilliams tarafından belirtildiği gibi, bu, Git tarafından .gitconfig dosyasına yapılan ve bağlantıyı yalnızca yeni ayarları içeren yeni bir dosyayla değiştiren güncellemelerden sağ çıkmaz.
Aşağıdaki PowerShell betiğini yazıp profil başlangıç betiğimde çalıştırarak bunu çözdüm. Her çalıştırıldığında, kullanıcının .gitconfig dosyasına eklenen tüm ayarları genel olana kopyalar ve ardından .gitconfig dosyasındaki tüm metni genel dosyayı içe aktaran ve [include] başlığıyla değiştirir.
Global .gitconfig dosyasını, diğer birçok global komut dosyası ve araçla birlikte bir depoda tutuyorum. Tek yapmam gereken, komut dosyasının global dosyama eklediği değişiklikleri kontrol etmeyi hatırlamak.
Bu benim için oldukça şeffaf çalışıyor gibi görünüyor. Umarım yardımcı olur!
9 Eylül: Yapılandırma dosyasına eklenen yeni girişlerin yinelendiğini algılamak ve bunları yok saymak için güncellendi. Bu, SourceTree gibi, var olanları bulamazlarsa ve içeriği takip etmezlerse yeni güncellemeler yazacak araçlar için kullanışlıdır.
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
}
ÇOK UZUN ZAMANDIR bununla ilgilenen biri olarak. Kılavuza bakınız:
$ XDG_CONFIG_HOME / git / config - İkinci kullanıcıya özel yapılandırma dosyası. Eğer $XDG_CONFIG_HOME
ayarlamak veya boş değil, $ HOME / .config / git / config kullanılacaktır. Bu dosyadaki tek değerli değişken kümesinin üzerine, ~ / .gitconfig içindeki her ne olursa olsun yazılacaktır. Bazen Git'in eski sürümlerini kullanıyorsanız, bu dosya için destek oldukça yakın zamanda eklendiğinden, bu dosyayı oluşturmamak iyi bir fikirdir.
Hangisi daha yeni eklendi. Bu döküm 2.15.0'dan.
Benim için çalışıyor.
%PROGRAMFILES%\Git\etc
profile
HOME="c:\location_were_you_want_gitconfig"
Not: Dosya izinleri genellikle sınırlıdır, bu nedenle onları uygun şekilde değiştirin, aksi takdirde değişikliklerinizi kaydedemezsiniz.
git config --list --show-origin
Gösteriliyor, orijinal HOME hala yerinde.
Benim için çok basit çalıştı:
Windows HOME değişken
işletim sistemini değiştirmek zorunda kalmadan çözüm : Windows 10
git sürümü: 2.27.0.windows.1
Git'in taşınabilir sürümünü kullanıyorum, bu nedenle tüm yapılandırma dosyalarım kalem sürücümde (E :). Bu benim için çalıştı:
.gitconfig
ve diğer bash dosyalarını koymak istedim , bu yüzden hepsini istediğim yerde home adında bir klasör oluşturdum .mkdir home
HOME="E:\git\home"
Artık C: \ Users <username> dizininde .gitconfig için arama yapmaz, yalnızca yukarıdaki ayarlanan yolu arar.
$ git config --global --list
fatal: unable to read config file 'E:/git/home/.gitconfig': No such file or directory
Henüz bir .gitconfig dosyası olmadığı için bir hata verdi. Bu, Windows'ta HOME dizinini değiştirmeden .gitconfig dosyasının konumunu başarıyla değiştirdiğimizi göstermek içindir.