我想编写一个小型构建助手工具,它将读取当前Git工作目录的一些属性,如最后一次提交哈希,是否有修改过的文件等等。我发现使用已安装的Git二进制文件比使用未知格式的压缩文件读取.git目录更容易。但我的工具必须尽可能便携。它适用于.NET应用程序,因此唯一的要求应该是.NET 2.0或更高版本。
现在我如何找到安装Git的路径?如果用户刚刚点击了Git安装程序,则会使用默认值。但它可能会有所不同。当我在git / bin中看到所有程序文件时,我真的不希望它出现在我的%PATH%中(其他像TortoiseGit这样的工具似乎也不需要)。我没有在注册表中找到任何路径线索。
我可以使用什么算法来查找Git,这不是完整的文件系统扫描? (我已经说过它需要快速吗?)
答案 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 CurrentVersion
,InstallPath
和LibexecPath
值到HKEY_LOCAL_MACHINE\Software\GitForWindows
键。
答案 2 :(得分:11)
如果您使用的是Windows 8及更高版本,请执行以下步骤。
对我而言,它是“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