Windowsのデフォルトでは、Gitはグローバル.gitconfigを c:\documents and settings\user\
.gitconfigが格納されるようにその位置を変更するにはどうすればよいc:\my_configuration_files\
ですか?
それはまったくできますか?
Windowsのデフォルトでは、Gitはグローバル.gitconfigを c:\documents and settings\user\
.gitconfigが格納されるようにその位置を変更するにはどうすればよいc:\my_configuration_files\
ですか?
それはまったくできますか?
回答:
に設定HOME
するc:\my_configuration_files\
と、gitはそこに.gitconfigを配置します。ここでは、環境変数の編集について説明します。HOME変数を設定してから、cmd.exeウィンドウを再度開く必要があります。「set」コマンドを使用して、HOMEが実際に正しい値を指していることを確認します。
もちろん、HOMEを変更すると他のアプリケーションにも影響します。ただし、gitのソースコードを読み取ることから、それがコマンドラインを調整する必要なしにこれらのファイルの場所を変更する唯一の方法のようです。Stefanの応答も考慮する必要があります。GIT_CONFIG変数を設定できます。ただし、必要な効果を与えるには、--global
すべてのgit呼び出しにフラグを渡す必要があります(さらに、ローカルの.git / configファイルは無視されます)。
.gitconfig
ファイルをそのディレクトリに移動しただけでは、機能しませんでした。
これに対するHOMEディレクトリの変更は間違っています。HOMEディレクトリへのgitconfigのシンボリックリンクを作成することをお勧めします。
$HOME
は、ネットワークドライブ上にあり、ネットワーク接続に問題がある場合は常に、リンクにも到達できません。
この問題は、他の構成ファイルでの作業とは少し異なるアプローチを使用して解決しました。 Git Configは、別の場所にある構成ファイルを指すことができるインクルードをサポートしています。次に、その代替の場所がインポートされ、.gitconfigファイルの一部であるかのように展開されます。だから今私は.gitconfigに単一のエントリを持っています:
[include]
path = c:\\path\\to\\my.config
Gitが.gitconfigファイルに書き込んだ更新は、インクルードパスを上書きしません。これは、時々、.gitconfigからmy.configに値を移動する必要があることを意味します。
git config --file "included.file"
の「ファイルと環境」セクションをご覧くださいgit help config
。
私はGitマスターではありませんが、私にとって最も簡単に機能するソリューションを探してみるC:\Program Files (x86)\Git\etc
とprofile
、テキストエディターにアクセスして開くだけでした。
if
37行目にステートメントがあり# Set up USER's home directory
ます。if
ステートメントを取り出して、gitconfigにしたいローカルディレクトリに置き、既存のgitconfigファイル(ネットワークドライブ上)をその場所にコピーしました。
私にとって、(少なくともgit-guiの)開始場所を変更しても、.gitconfigを探す場所には影響しませんでした。私の職場でのセットアップはU:を私たちの家にマウントしますが、U:に直接書き込む権限はなく、内部で作成されたサブディレクトリしかありません。
このアプリケーションのために、HOMEDRIVEおよびHOMEPATH env変数をオーバーライドするバッチスクリプトを作成することで、問題を解決しました。次に、代わりにそのバッチスクリプトを指すように[スタート]メニューのショートカットを変更しました。
Windowsを使用していて、環境変数の変更またはmklink
権限の不足が原因で問題が発生した場合、問題の簡単な解決策は、別の場所でgitバッチを開始することです。
Git Bash.exeを右クリックし、プロパティをクリックして、[開始]プロパティをに変更しc:\my_configuration_files\
ます。
%HOMEDRIVE%%HOMEPATH%
を `c:\ my_repo_folder`に変更しました。魅力的に働いた。
同じことをしたかった。私が見つけた最高のものは、@ MicTechのソリューションでした。ただし、@ MotoWilliamsで指摘されているように、Gitが.gitconfigファイルに行った更新では、リンクは新しい設定のみを含む新しいファイルに置き換えられます。
これを解決するには、次のPowerShellスクリプトを記述して、プロファイルの起動スクリプトで実行します。実行されるたびに、ユーザーの.gitconfigに追加された設定をグローバル設定にコピーし、.gitconfigファイル内のすべてのテキストを、グローバルファイルをインポートする[include]ヘッダーに置き換えます。
グローバル.gitconfigファイルは、他の多くのグローバルスクリプトやツールとともに、リポジトリに保管しています。スクリプトがグローバルファイルに追加する変更をチェックインすることを忘れないでください。
これは私にはかなり透過的に機能するようです。それが役に立てば幸い!
9月9日:設定ファイルに追加された新しいエントリが重複していることを検出して無視するように更新されました。これは、既存の更新が見つからず、インクルードに従わない場合に新しい更新を書き込むSourceTreeなどのツールに役立ちます。
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
}
これに非常に長い間興味を持っていた人として。マニュアルから見る:
$ XDG_CONFIG_HOME / git / config -2番目のユーザー固有の構成ファイル。場合は$XDG_CONFIG_HOME
設定または空にされていない、$ HOME / .configを/ gitの/ configに使用されます。このファイルに設定されている単一値の変数は、〜/ .gitconfigにあるもので上書きされます。このファイルのサポートがごく最近追加されたため、古いバージョンのGitを使用する場合は、このファイルを作成しないことをお勧めします。
最近追加されたものです。このダンプは2.15.0からです。
私のために働く。
私にとってはそれは非常に簡単に働きました:
Windows HOME変数
OS を変更する必要のない解決策:Windows 10
gitバージョン:2.27.0.windows.1
私はGitのポータブルバージョンを使用しているため、すべての構成ファイルはペンドライブ(E :)にあります。これは私のために働いたものです:
.gitconfig
他のbashファイルをEに配置したかったので、ホームと呼ばれるフォルダーを作成し、そこにすべてを格納しました。mkdir home
HOME="E:\git\home"
これで、C:\ Users <username>ディレクトリで.gitconfigが検索されなくなり、上の設定パスのみが検索されます。
$ git config --global --list
fatal: unable to read config file 'E:/git/home/.gitconfig': No such file or directory
.gitconfigファイルがまだ存在しないため、エラーが発生しました。これは、WindowsのHOMEディレクトリを変更せずに.gitconfigファイルの場所を正常に変更したことを示すためだけのものです。