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 переопределить.

Ответ 10

UPDATE: все еще не работает с выпуском, упомянутым ниже, моя ошибка. Git push works Git pull не делает.

Мне кажется, что проблема была устранена Apple с Mac OS X Yosemite 10.10 (14A329r). Я нахожусь на общем бета-йосемитском канале (не разработчике). Git push/ pull работает так, как ожидалось, без каких-либо изменений.