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

ygo*_*goe 51 windows git

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

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

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

leo*_*loy 80

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

$ cd / && pwd -W
C:/Program Files (x86)/Git
Run Code Online (Sandbox Code Playgroud)

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

  • @ user3105700呃,不,这适用于Windows(参见我的结果行).我正在使用Git for Windows附带的MinGW bash. (11认同)
  • 谢谢!发现SourceTree在`C:\ Users\<用户>\AppData\Local\Atlassian\SourceTree\git_local\bin`安装git.把它放在`PATH`中,`cmd`现在识别`git`.再次谢谢你! (2认同)

ssc*_*rth 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
Run Code Online (Sandbox Code Playgroud)

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

编辑:混帐的Windows 2.6.1现在还写CurrentVersion,InstallPathLibexecPath值的HKEY_LOCAL_MACHINE\Software\GitForWindows关键.


小智 11

如果您在Windows 8及更高版本中,则可以按照以下步骤操作.

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

对我来说,它是"C:\ Users \\ AppData\Local\Programs\Git\cmd\git-gui.exe"

希望能帮助到你


小智 7

您也可以打开Git Bash并输入where git。它将返回机器上安装Git的路径。

  • 仅出于记录目的,“ where”不是Git Bash命令,而是Windows命令。您可以使用它找到任何程序。 (3认同)