在Windows系统上查找安装Git的path
我想写一个小的帮助工具,读取当前Git工作目录的一些属性,比如最后一个提交哈希,是否有修改过的文件等等。 我发现使用已安装的Git二进制文件比使用未知格式的压缩文件读取.git目录更容易。 但我的工具必须尽可能便携。 它的目的是.NET应用程序,所以唯一的要求应该是.NET 2.0或更新。
现在我怎么find安装Git的path? 如果用户刚刚点击了Git安装程序,就会使用默认的一个。 但可能会有所不同。 当我在git / bin中看到所有的程序文件时,我真的不希望它在我的%PATH%中(像TortoiseGit这样的其他工具似乎也不需要)。 我还没有在registry中find任何path的线索。
我可以使用什么algorithm来查找Git,这不是一个完整的文件系统扫描? (我已经说过,它需要很快?)
我正在使用下面的batch file来找出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上,则必须明确检查registry的32位分支。
编辑: Git for Windows 2.6.1现在另外写入 CurrentVersion
, InstallPath
和LibexecPath
值到HKEY_LOCAL_MACHINE\Software\GitForWindows
项。
如果你在(或者如果你可以打开)你的git bash shell,你可以使用pwd -W
$ cd / && pwd -W C:/Program Files (x86)/Git
(我知道,这可能不是你想要的,这是相当基本的,但我花了一些时间来find这个,也许这对其他人有用)。
我在C:\ Program Files \ Git \ cmd \ git.exe中发现了git.exe
如果您在Windows 8及更高版本,则可以按照以下步骤操作。
- 转到您的开始屏幕并searchgit.exe
- 在search结果中,右键单击Git Gui / Git Bash图标并select打开文件位置
- 你将被带到快捷方式将被定位的地方。 右键点击快捷键ndselect属性
- 文件位置可以在“目标”字段中find
对我来说是“C:\ Users \\ AppData \ Local \ Programs \ Git \ cmd \ git-gui.exe”
希望能帮助到你
请在registry下find:HKEY_CURRENT_USER \ Software \ Git-Cheetah