Подтвердить что ты не робот

Программно (не вручную) найти путь, по которому Git установлен в системе Windows

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

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

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

4b9b3361

Ответ 1

Я использую следующий пакетный файл, чтобы узнать, где установлена ​​Git для Windows:

  @echo off

setlocal enabledelayedexpansion

rem Прочтите путь установки Git для Windows из реестра.
для %% k in (HKCU HKLM) do (   для %% 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' ) делать (           для /f  "tokens = 3" %% z in ( "%% a" ) do (               set GIT = %% z: %% b               echo Найден Git в "! GIT!".               goto НАЙДЕНО           )       )   )
)

goto NOT_FOUND

:НАЙДЕННЫЙ

rem Убедитесь, что Bash находится в PATH (для запуска скриптов).
set PATH =% GIT% bin,% PATH%

Сделайте что-нибудь с Git...

:НЕ НАЙДЕНО
Код>

Я должен быть прямым, чтобы сделать что-то подобное в .NET. Просто помните, что вы должны явно проверить 32-разрядную ветвь реестра, если вы находитесь в 64-разрядной Windows.

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

Ответ 5

Я нашел git.exe в C:\Program Files\Git\cmd\git.exe

Ответ 6

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

Ответ 7

загляните в реестр в разделе: HKEY_CURRENT_USER\Software\ Git -Cheetah

Ответ 8

Вы можете найти его в реестре Windows под

HKEY_LOCAL_MACHINE\SOFTWARE\GitForWindows\InstallPath