OSX 10.10 yosemite beta on git pull : git-sh-setup : No such file or directory git-core /

OSX 10.10 Yosemite Beta로 업그레이드 한 후 실행 git pull하면 다음 오류가 반환됩니다.

/ Library / Developer / CommandLineTools / usr / libexec / git-core / git-pull : 11 행 : git-sh-setup : 해당 파일 또는 디렉토리 없음

참조 된 git-core 디렉토리를 확인했고 git-sh-setup.sh가 있습니다.

다른 git 명령이 예상대로 정확히 작동합니다.



답변

현재로서는 가장 깨끗한 해결책은 iTerm 세션의 초기 명령을 다음과 같이 변경하는 것입니다.

/usr/bin/login -f <your user name>

이것은 나를 위해 문제를 해결합니다.

문제 분석을위한 추가 데이터 포인트 : 10.10에서는 PATH 환경 변수의 여러 복사본이 존재하고 서브 쉘이 두 번째 복사본을 선호하는 것 같습니다.

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'.

나는 이것이 iTerm이 아닌 10.10에서 문제라고 생각하지만 iTerm 이하는 일이 그것이 스스로를 드러내는 원인입니다 (이는 Terminal.app에서 발생하지 않습니다)

업데이트 : 이것은 iTerm이 환경에 “흥미로운”일을함으로써 발생합니다. 이 문제를 해결하려면 iTerm 2.0의 공식 릴리스로 업데이트하십시오.


답변

나는 이것이 zsh를 사용할 때 iTerm의 버그라고 생각합니다. 그들은 의도적으로 / usr / bin / login을 호출하지 않으며 execle을 사용하여 환경 변수를 지우지 않습니다.


답변

최신 버전의 iTerm2를 다운로드하면이 문제가 해결되었습니다!


답변

또 다른 해결책, iTerm2 수정

cd /Applications/iTerm.app/Contents/MacOS
mv iTerm iTerm-bin

cat > iTerm <<EOF
#!/bin/sh
unset PATH
\${0}-bin
EOF

chmod +x iTerm

끝난.

Yosemite와 함께 iTerm2를 즐기십시오!


답변

임시 솔루션으로 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을 수정하지만 더 나은 솔루션이 있다고 확신합니다.


답변

공식적인 수정이 나오기 전에 Git가 작동해야하는 경우 임시 수정 (Homebrew 및 Git 2.0.0 가정)이 있습니다. 두 개의 쉘 변수를 설정했습니다.

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의 답변을 확인하십시오 …


답변

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

*이 경로는 homebrew와 함께 git이 설치되어 있고 /usr/local/Cellar/git/2.0.0/ 내부에 있다고 가정합니다.