在 Windows 上更改. gitconfig 位置

默认情况下,WindowsGit 将 global. gitconfig 放在 c:\documents and settings\user\

如何更改该位置,使.gitconfig 存储在 c:\my_configuration_files\中?

能做到吗?

173685 次浏览

Look in the 档案 and 环境 section of git help config.

如果将 HOME设置为 c:\my_configuration_files\,那么 git 将定位。这里是 gitconfig。编辑环境变量描述为 给你。您需要设置 HOME 变量,然后重新打开任何 cmd.exe 窗口。使用“ set”命令验证 HOME 确实指向正确的值。

更改居所当然也会影响其他申请。但是,从读取 git 的源代码来看,这似乎是改变这些文件位置而不需要调整命令行的唯一方法。您还应该考虑 Stefan 的响应: 可以设置 GIT _ CONFIG 变量。但是,为了使它达到您想要的效果,您需要将 --global标志传递给所有 git 调用(加上任何本地调用)。Git/config 文件被忽略)。

更改 HOME 目录,因为这是错误的。更好的做法是为 gitconfig 创建到 HOME 目录的符号链接。

  1. 将. gitconfig 从用户主目录移动到所需的目录。
  2. 以管理员身份运行命令行
  3. 转到您的用户主目录
  4. 输入 mklink. gitconfig PathForNewLocationOfConfig.gitconfig

如果您在 Windows 上,并且由于特权不足而无法更改环境变量或 mklink,那么一个简单的解决方案是在另一个位置启动 git 批处理。

只需右键单击 Git Bash.exe,单击 properties 并将“ Start in”属性更改为 c:\my_configuration_files\

我也想这么做。我能找到的最好的解决方案是@MicTech。然而,正如@MotoWilliams 所指出的,Git 对。Gitconfig 文件,它将链接替换为一个只包含新设置的新文件。

I solved this by writing the following PowerShell script and running it in my profile startup script. Each time it is run it copies any settings that have been added to the user's .gitconfig to the global one and then replaces all the text in the .gitconfig file with and [include] header that imports the global file.

我保留了全球性的。Gitconfig 文件以及许多其他全局脚本和工具。我所要做的就是记住检入脚本附加到全局文件中的任何更改。

这看起来对我很有效,希望能有帮助!

9月9日: 更新以检测添加到配置文件中的新条目是否重复,并忽略它们。这对于像 SourceTree 这样的工具非常有用,如果它们找不到现有的更新并且不遵循 include,它们将编写新的更新。

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
}

我不是 Git 高手,但是通过搜索对我来说最简单的解决方案,我只需要转到 C:\Program Files (x86)\Git\etc并在文本编辑器中打开 profile

# Set up USER's home directory行37有一个 if语句。我取出 if语句并将其放入我希望 gitconfig 所在的本地目录中,然后将现有的 gitconfig 文件(位于网络驱动器上)复制到该位置。

对我来说,更改 Start In 位置(至少是 git-gui 的位置)并不影响它查找的位置。Gitconfig.我的工作设置安装 U: 为我们的家,但我们没有权限写在 U: 直接,只有子目录是为我们创建的内部,所以这是一个交易破坏者对我来说。

我通过制作一个批处理脚本解决了这个问题,这个脚本只为该应用程序覆盖 HOMEDRIVE 和 HOMEPATH env 变量。然后更改“开始”菜单快捷方式,使其指向该批处理脚本。

I have solved this problem using a slightly different approach that I have seen work for other configuration files. Git Config supports includes that allows you to point to a configuration file in another location. That alternate location is then imported and expanded in place as if it was part of .gitconfig file. So now I just have a single entry in .gitconfig:

[include]
path = c:\\path\\to\\my.config

Git 写入的任何更新到。Gitconfig 文件不会覆盖我的包含路径。这确实意味着有时候我可能需要从。Gitconfig 到 my.config。

首先检查 HOME 设置,然后将 HOME 和 HOMEDRIVE 更改为现有目录。

c:\git>set HOME
HOME=U:\
HOMEDRIVE=U:
HOMEPATH=\

then change HOME and HOMEDRIVE by

set HOME=c:\tmp
set HOMEDRIVE=C:

作为一个已经对此感兴趣很长时间的人,请参阅说明书:

$XDG _ CONFIG _ HOME/git/config -第二个用户特定的配置文件。如果 $XDG_CONFIG_HOME未设置或为空,$HOME/。将使用 config/git/config。该文件中的任何单值变量集都将被 ~/中的内容覆盖。Gitconfig.如果您有时使用 Git 的旧版本,最好不要创建这个文件,因为对这个文件的支持是最近才添加的。

Which was only recently added. This dump is from 2.15.0.

我没问题。

  1. Change to folder %PROGRAMFILES%\Git\etc
  2. 编辑文件 profile
  3. 添加到第一行 HOME="c:\location_were_you_want_gitconfig"
  4. 成交

Note: The file permissions are usually restricted, so change them accordingly or you won't be able to save your changes.

对我来说,它的工作原理很简单:

  1. 将“ . gitconfig”从旧目录复制到% USERPROFILE% (“ c: users username”中的标准)
  2. 右键单击 GITGUI 和 GITBASH 的开始图标,并将“ run in”: “% HOMEDRIVE%% HOMEPATH%”更改为“% USERPROFILE%”。当然,您可以使用任何其他目录而不是“% USERPROFILE%”。

之前的截图

之后的截图

无需更改 WindowsHOME 变量的解决方案
操作系统: Windows10
git version: 2.27.0.windows.1

我使用 Git 的便携版本,所以我的所有配置文件都在我的笔式驱动器上(E:)。这就是对我有效的方法:

  1. https://git-scm.com/下载便携式 Git。运行该文件并将其安装在所需的位置。我将其安装在 笨蛋中。
  2. 笨蛋运行 Git-bash exe
  3. I wanted to put .gitconfig and other bash files in E, so I created a folder called where I want them all in.
    mkdir home
  4. Go to 等等 folder and open the file called 侧写 (In my case, it's E:\git\etc\profile)
  5. Add absolute path to the directory we created (or to the directory where you want to have your .gitconfig file located) at the end of the 侧写 file.
    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 文件。这只是为了证明我们已经成功地更改了。Gitconfig 文件而不更改 Windows 中的 HOME 目录。

1-打开 D:\PortableApps\Git-2.31.1PortableByAmir\etc\profile通过笔记本

2-将其添加到 profile文件:

HOME="/PortableHome"

3-在 D:\PortableApps\Git-2.31.1PortableByAmir\中创建 PortableHome文件夹

收到

C:\Users\Amir\.gitconfig
C:\Users\Amir\.git-credentials

D:\PortableApps\Git-2.31.1PortableByAmir\PortableHome

Note: D:\PortableApps\Git-2.31.1PortableByAmir\bin\bash.exe is not a portable git 只打开 D:\PortableApps\Git-2.31.1PortableByAmir\git-bash.exe

至少在2.34.1版本中,您可以将 GIT_CONFIG_GLOBAL环境变量设置为指向 .gitconfig文件的路径。有关详细信息,请参阅 http://git-scm.com/docs/git-config#_environment