OSX 10.10 yosemite beta на git pull: git -sh-setup: нет такого файла или каталога
После обновления до OSX 10.10 Yosemite Beta запуск git pull
приводит к следующей ошибке:
/Library/Разработчик/CommandLineTools/usr/libexec/git -core/ git -pull: строка 11: git -sh-setup: Нет такого файла или каталога
Я проверил ссылочный каталог git -core и git -sh-setup.sh.
Другие команды git работают точно так, как ожидалось
Ответы
Ответ 1
Я думаю, что самым чистым решением для этого на данный момент является изменение начальной команды на вашем сеансе iTerm, чтобы быть
/usr/bin/login -f <your user name>
Это исправляет проблему для меня.
Еще одна точка данных для анализа проблемы: похоже, что в 10.10 существует несколько копий переменной среды PATH, и подоболочки, похоже, предпочитают вторую копию.
Вы можете воспроизвести это, запустив любое приложение cocoa на консоли, запущенное iTerm. Вы получите предупреждение, которое выглядит так:
2014-06-04 19:23:09.859 gitx[14676:362580] *** -[NSProcessInfo environment]: Warning: duplicate definition for key 'PATH' found in environment -- subsequent definitions are ignored. The first definition was '(the path I have configured in my shell)', the ignored definition is '/usr/bin:/bin:/usr/sbin:/sbin'.
Я считаю, что это проблема в 10.10, а не iTerm, но что-то, что делает iTerm, вызывает ее проявление (этого не происходит в Terminal.app)
Обновить. Это вызвано тем, что iTerm делает "интересный" материал для среды. Обновите официальный релиз iTerm 2.0, чтобы устранить эту проблему.
Ответ 2
Я считаю, что это ошибка в iTerm при использовании zsh. Они намеренно не вызывают /usr/bin/login, и они не используют execle для очистки переменных среды, как они должны быть.
Ответ 3
Загрузка последней версии iTerm2 исправила это для меня!
Ответ 4
Другое решение, измените iTerm2
cd /Applications/iTerm.app/Contents/MacOS
mv iTerm iTerm-bin
cat > iTerm <<EOF
#!/bin/sh
unset PATH
\${0}-bin
EOF
chmod +x iTerm
Готово.
Наслаждайтесь iTerm2 с помощью Yosemite!
Ответ 5
В качестве временного решения я модифицировал строки git -pull 11, 12 и 336:
. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup
. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-i18n
eval="/usr/local/Cellar/git/2.0.0/libexec/git-core/git-merge $diffstat $no_commit $verify_signatures $edit $squash $no_ff $ff_only"
Теперь это исправляет git -pull, но я уверен, что есть лучшее решение.
Ответ 6
Здесь временное исправление (при условии, что Homebrew и Git 2.0.0), если вам нужно Git работать до того, как выйдет официальное исправление. Я устанавливаю две переменные оболочки:
export GIT_PATH="/usr/local/Cellar/git/2.0.0/bin"
export GIT_CORE_PATH="/usr/local/Cellar/git/2.0.0/libexec/git-core"
... и затем заменить экземпляры git
на соответствующие абсолютные ссылки. Вы можете использовать следующие Gists, чтобы сделать то же самое:
- Заменить /usr/local/Cellar/git/2.0.0/libexec/git -core/git -sh-setup/ с помощью git -sh-setup
- Замените /usr/local/Cellar/git/2.0.0/libexec/git -core/git -stash/ на git -stash
- Замените /usr/local/Cellar/git/2.0.0/libexec/git -core/git -pull/ на git -pull
Это взломать наверняка, но это заставит вас идти.
РЕДАКТИРОВАТЬ: убедитесь, что вы смотрите на ответ от @pilif, прежде чем делать это...
Ответ 7
Обходное решение Ubiquill применяется для git rebase (и, предположительно, в зависимости от того, какие другие функции не работают). В этом случае для замены строк 47 и 48 требуется следующее:
. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup
. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-i18n
* Этот путь предполагает, что у вас есть git, установленный с homebrew, и он живет внутри/usr/local/Cellar/git/2.0.0/.
Ответ 8
Измените файл git -pull и добавьте эту строку поверх него (сразу после блока комментариев)
PATH="$(dirname $0):$PATH"
Или просто скопируйте его в свой терминал:
ed -s $(which git-pull) <<< $'6i\nPATH="$(dirname $0):$PATH"\n.\nwq'
Обновление: Как предполагается pilif, поскольку последнее обновление iTerm2 (1.0.0.20140629), git-pull
выполняется без этого PATH
переопределить.
Ответ 9
Появится обновление до git -rebase.sh
https://github.com/git/git/pull/110/files
Ответ 10
UPDATE: все еще не работает с выпуском, упомянутым ниже, моя ошибка. Git push works Git pull не делает.
Мне кажется, что проблема была устранена Apple с Mac OS X Yosemite 10.10 (14A329r). Я нахожусь на общем бета-йосемитском канале (не разработчике). Git push/ pull работает так, как ожидалось, без каких-либо изменений.