Msysgit bash shell - как устранить неполадки "не может найти команду"
Мне нужна помощь в получении git расширений для работы с msysgit. Мне не повезло с расширениями git -tfs и git -fetchall, в обоих случаях это та же проблема. Аддон потребует, чтобы файл был помещен туда, где git может найти его (git -tfs.exe и git -fetchall.sh). Я понимаю, это означает, что файлы должны находиться в каталоге, который находится в переменной среды PATH. В обоих случаях я застрял в этой точке:
$ git-diffall
bash: git-diffall: command not found
или
$ git-tfs
bash: git-tfs: command not found
Когда я запускаю echo% PATH% из обычной командной оболочки, он показывает, что моя переменная path включает каталоги, где git -diffall и git -tfs. Как я могу отладить это, или я что-то упустил? Есть ли способ в msysgit для проверки пути поиска команд, что я ожидаю?
Ответы
Ответ 1
Хорошо, я нашел разрыв. Это было неуловимо, пока я не начал запускать "echo $PATH" из оболочки (а не echo% PATH% из командной оболочки Windows, у которой был другой результат).
Две проблемы:
-
Когда я настроил переменные среды, у меня первоначально был "\" в конце пути. Кажется, это вызвало echo $PATH, чтобы показать недопустимые пути, такие как '/c:/directory' вместо '/c/directory/.
-
Необходима перезагрузка, чтобы изменения в переменных системной среды, сделанные через пользовательский интерфейс Windows, отражались в оболочке msysgit/ bash/git.
Ответ 2
Помимо того, что они находятся в $PATH, они также должны быть исполняемыми. Итак, в Cygwin (я осматриваю Windows, потому что вы использовали "% PATH%" вместо "$ PATH" в вашем вопросе, что относится к Windows), вы должны перейти в каталог, в котором программа git-difall
, а затем введите:
chmod a+x git-diffall
Кроме того, в отличие от Windows, которая игнорирует расширения ".exe", ".com", ".bat" и т.д., BASH действительно заботится об этих расширениях, поэтому, если у вас есть git-diffall.sh
на вашем пути, вы должен был бы вызвать его как git-diffall.sh
, а не как git-diffall
. Если вы хотите вызвать его как git-diffall
, просто удалите расширение файла. Вы можете сделать это, используя командную строку Cygwin, используя:
mv git-diffall.sh git-diffall
Кроме того, первый chmod
должен использовать git-diffall
или git-diffall.sh
в зависимости от фактического имени.
Ответ 3
Сегодня я столкнулся с той же проблемой, но решения здесь нет, поэтому я добавлю два цента.
Если у вас есть% HOME% path, установленный в окнах - убедитесь, что:
- он создается в настройках -user-environment, а не в системных. git сам по себе работает с системными переменными правильно, но GitExtensions принимает только HOME из пользовательских переменных.
- он не равен git базовому каталогу. Дело в том, что msysgit рассматривает
C:\Program Files (x86)\Git
(или там, где вы его установили) как root /
и добавляет /bin
к нему в буквальном смысле так же, как и команда PATH=$HOME/bin:$PATH
. Таким образом, если ваш %HOME%
равен C:\Program Files (x86)\Git
, у вас будет $PATH, начиная с //bin:
, что явно неверно.
Ответ 4
Предупреждение, начиная с git 2.0.X/2.1 (Q3 2014), git diffall
всегда будет возвращать "command not found
": он был удален.
Смотрите зафиксировать 502b0a1 Джонатан Нидер (jrn
) (при помощи Тим Хениган (thenigan
):
contrib
: удалить git-diffall
Функциональность "git diffall
" script в contrib/
была включена в "git difftool
" когда опция --dir-diff
была добавлена в v1.7.11 ( около июня 2012 г.). Как только difftool
узнал эти функции, diffall
script стал устаревшим.
Единственное отличие в поведении заключается в том, что при сравнении с рабочим деревом difftool
копирует все файлы, измененные пользователем, обратно в рабочее дерево, когда инструмент diff выходит.
"git diffall
" потребовал, чтобы параметр --copy-back
сделал то же самое.
Все остальные опции diffall
имеют то же значение в difftool
.
Сделайте жизнь проще для людей, выбирающих инструмент для использования, удалив старый diffall
script. Указатель в примечаниях к выпуску должен быть достаточным для миграции текущих пользователей.