以编程方式(非手动)查找Windows系统上安装Git的路径

时间:2011-12-14 15:47:16

标签: windows git

我想编写一个小型构建助手工具,它将读取当前Git工作目录的一些属性,如最后一次提交哈希,是否有修改过的文件等等。我发现使用已安装的Git二进制文件比使用未知格式的压缩文件读取.git目录更容易。但我的工具必须尽可能便携。它适用于.NET应用程序,因此唯一的要求应该是.NET 2.0或更高版本。

现在我如何找到安装Git的路径?如果用户刚刚点击了Git安装程序,则会使用默认值。但它可能会有所不同。当我在git / bin中看到所有程序文件时,我真的不希望它出现在我的%PATH%中(其他像TortoiseGit这样的工具似乎也不需要)。我没有在注册表中找到任何路径线索。

我可以使用什么算法来查找Git,这不是完整的文件系统扫描? (我已经说过它需要快速吗?)

7 个答案:

答案 0 :(得分:80)

如果您在git bash shell中(或者如果可以打开),可以使用pwd -W

$ cd / && pwd -W
C:/Program Files (x86)/Git

(我知道,这可能不是你想要的,而且它非常基础,但我花了一些时间来找到它,也许它对其他人有用。)

答案 1 :(得分:19)

我正在使用以下批处理文件来找出Git for Windows的安装位置:

@echo off

setlocal enabledelayedexpansion

rem Read the Git for Windows installation path from the Registry.
for %%k in (HKCU HKLM) do (
    for %%w in (\ \Wow6432Node\) do (
        for /f "skip=2 delims=: tokens=1*" %%a in ('reg query "%%k\SOFTWARE%%wMicrosoft\Windows\CurrentVersion\Uninstall\Git_is1" /v InstallLocation 2^> nul') do (
            for /f "tokens=3" %%z in ("%%a") do (
                set GIT=%%z:%%b
                echo Found Git at "!GIT!".
                goto FOUND
            )
        )
    )
)

goto NOT_FOUND

:FOUND

rem Make sure Bash is in PATH (for running scripts).
set PATH=%GIT%bin;%PATH%

rem Do something with Git ...

:NOT_FOUND

我应该直接在.NET中做类似的事情。请记住,如果您使用的是64位Windows,则必须显式检查注册表的32位分支。

修改:Git for Windows 2.6.1现在additionally writes CurrentVersionInstallPathLibexecPath值到HKEY_LOCAL_MACHINE\Software\GitForWindows键。

答案 2 :(得分:11)

如果您使用的是Windows 8及更高版本,请执行以下步骤。

  1. 转到开始屏幕并搜索git.exe
  2. 在搜索结果中右键单击Git Gui / Git Bash图标并选择打开文件位置
  3. 您将被带到一个快捷方式所在的地方。右键单击快捷方式和选择属性
  4. 文件位置可在目标字段
  5. 中找到

    对我而言,它是“C:\ Users \\ AppData \ Local \ Programs \ Git \ cmd \ git-gui.exe”

    希望有所帮助

答案 3 :(得分:5)

您还可以打开Git Bash并键入where git。它将返回计算机上Git的安装路径。

答案 4 :(得分:1)

git --man-path让你[base git installation dir] \ mingw64 \ share \ man。 git.exe位于[base git installation dir] \ cmd。

答案 5 :(得分:0)

在注册表中查看:HKEY_CURRENT_USER \ Software \ Git-Cheetah

答案 6 :(得分:0)

古老的问题,但如果您通过标准安装程序安装 git,则获取安装位置的一种方法是询问注册表:

在 powershell 中:

(Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\GitForWindows).InstallPath

返回:

C:\Program Files\Git