Программно (не вручную) найти путь, где Git установлен в системе Windows - PullRequest
52 голосов
/ 14 декабря 2011

Я хотел бы написать небольшой вспомогательный инструмент для сборки, который будет читать некоторые свойства текущего рабочего каталога Git, такие как хэш последнего коммита, есть ли измененные файлы и так далее.Я обнаружил, что проще использовать установленные двоичные файлы Git вместо чтения каталога .git с его сжатыми файлами в неизвестном формате.Но мои инструменты должны быть максимально портативными.Он предназначен для приложений .NET, поэтому единственным требованием должен быть .NET 2.0 или новее.

Теперь, как мне найти путь, где установлен Git?Существует вариант по умолчанию, который используется, если пользователь только что щелкнул через установщик Git.Но это может быть по-другому.И когда я вижу все программные файлы в git / bin, я действительно не хочу, чтобы это было в моем% PATH% (что, похоже, не требуется другим инструментам, таким как TortoiseGit).Я не нашел никаких путей к ключу в реестре.

Какой алгоритм я мог бы использовать, чтобы найти Git, это не полное сканирование файловой системы?(Я уже говорил, что это должно быть быстро?)

Ответы [ 6 ]

80 голосов
/ 06 мая 2013

Если вы находитесь внутри (или можете открыть) оболочки git bash, вы можете использовать pwd -W

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

(Я знаю, что это, вероятно, не то, что вы хотите, и это довольно элементарно, но я потратил некоторое время, чтобы найти это, и, возможно, это полезно для других людей).

20 голосов
/ 06 января 2012

Я использую следующий пакетный файл, чтобы узнать, где был установлен Git для 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.Просто помните, что вы должны явно проверять 32-битную ветку Реестра, если вы работаете в 64-битной Windows.

Редактировать: Git для Windows 2.6.1 теперь дополнительно записывает значения CurrentVersion, InstallPath и LibexecPath в клавишу HKEY_LOCAL_MACHINE\Software\GitForWindows.

11 голосов
/ 05 октября 2016

Если вы находитесь в Windows 8 и выше, вот шаги, которые вы можете выполнить.

  1. перейдите на начальный экран и найдите git.exe
  2. В результатах поискащелкните правой кнопкой мыши значок Git Gui / Git Bash и выберите «Открыть файл»
  3. . Вы попадете во флдер, где будут расположены ярлыки.Щелкните правой кнопкой мыши по ярлыку и выберите свойства
  4. расположение файла можно найти в поле «Цель»

Для меня это было «C: \ Users \\ AppData \ Local \ Programs \»Git \ cmd \ git-gui.exe "

Надеюсь, это поможет

7 голосов
/ 28 июня 2018

Вы также можете открыть Git Bash и набрать where git.Он вернет путь, где установлен Git на вашем компьютере.

1 голос
/ 05 июня 2018

git --man-path возвращает вас в [каталог установки git] \ mingw64 \ share \ man. git.exe находится в каталоге [каталог установки git] \ cmd.

0 голосов
/ 14 декабря 2011

посмотрите в реестре: HKEY_CURRENT_USER \ Software \ Git-Cheetah

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...