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


90

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 명령이 예상대로 정확히 작동합니다.


3
을 제외하고는이 문제가 발생 git stash합니다. 해결책을 찾으면 알려 드리겠습니다
— cadlac 2014-06-03

zsh ... git에서만이 문제가 발생했습니다 .bash에서 실행할 때 제대로 작동하는 것 같습니다. Zsh 관련?
— zeekay 2014-06-04

12
이것은 zsh를 사용하는 iTerm2의 버그였습니다. iTerm2는 최신 릴리스 (v1.0.0.20140629)에서 수정했습니다.
— rds

답변:


100

현재로서는 가장 깨끗한 해결책은 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의 공식 릴리스로 업데이트하십시오.


6
이것은 정답, 놀라운 수정입니다. 그러나, 나는 명령을 설정 /usr/bin/login -f $USER, 단지 내가 :) 여러 계정에 동일한 프로파일 할 수 있습니다
— cadlac을

12
분명히 bash는 모든 중복 환경 변수를 제거합니다. 따라서 명령을 설정하면 /bin/bash -c /bin/zsh다른 환경 변수 (예 : $SSH_AUTH_SOCK.
— cypheon

2
이것은 지금까지 가장 깨끗한 방법으로 문제를 해결했습니다. 감사합니다!
— meghaphone 2014-06-06

2
이것은 자식을 수정합니다. 그러나 id_rsa.pub와 함께 ssh를 사용해야 할 때마다 암호를 입력하라는 요청을 받았습니다. 초기 명령을 변경하거나 Terminal.app에서이 작업을 수행 할 필요가 없었습니다. 어떤 생각?
— ZeR0

5
문자 인코딩을 유지하기 때문에 /bin/bash -c /bin/zsh보다 낫다고 생각 /usr/bin/login -f <your user name>합니다. /usr/bin/login -f <your user name>인코딩이 손실되어 파일을 정상적으로 표시 할 수 없습니다.
— Alpha Liu

35

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


1
와우 당신 말이 맞아요. 다양한 Git 수정 사항을 작동 시키려고 몇 시간을 보냈는데 iTerm2 w / zsh에서 Yosemite의 기본 터미널 (여전히 zsh 포함)으로 전환하는 것이 잘 작동하는 것으로 나타났습니다. 어떻게 찾았 어?
— jbnunn 2014-06-05

8
글쎄요, 이건 지금까지 가장 구체적인 사람들입니다 ... 정말 중요한 사건입니다.
— Drew

2
그것은 아주 좋은 분석이었습니다. 따라서 좋은 해결 방법은 iTerm의 초기 명령을 / usr / bin / login -f <사용자 이름>으로 설정하는 것입니다.
— pilif 2014-06-05

13
또 다른 해결 방법은 iTerm의 로그인 셸 명령을/bin/bash -c /bin/zsh
— Vince

1
환경 설정> 프로필> 일반 섹션 에서 login shell로 변경 하고 @Sorenly가 제안한대로 command사용 /bin/bash -c /bin/zah하여이 문제를 바로 해결했습니다!
— jlmakes

20

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


1
당신이 기술 자라는 것을 증명하지 않고 해결하고 싶다면 ..., 그냥하세요. Marthyn 덕분에 ...
— Krishnaprasad Varma

아래 설명에서 언급했듯이 git pulls가 작동하지 않도록하는 것은 iTerm과 zsh가 함께있는 것으로 보입니다. iTerm2로 이동하면 문제가 해결됩니다.
— MikeHoss 2014

4
@MikeHoss를 명확히하기 위해 iTerm2 버전 1.0.x는 작동하지 않지만 iTerm2 버전 2.0.x는 작동합니다. 둘 다 iTerm2이지만 버전이 중요합니다.
— Kevin Cooper

16

또 다른 해결책, 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를 즐기십시오!


iTerm2가 문제이며 이것은 문제에 대한 최상의 솔루션 중 하나입니다. 명성.
— ocodo

공개 10.10 릴리스에서도이 문제가 발생하여 수정되었습니다. 감사합니다 Feng!
— Ash Furrow

13

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


2
나는 또한 231처럼 변경해야했습니다. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-parse-remote
— Keith Smiley

2
변경해야 할 경우를 대비하여를 가리 키도록 설정했습니다 $GIT_PATH/git-sh-setup.
— TheJF 2014 년

1
내가 갖는 /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup: line 334: git: command not found fatal: 'pull' appears to be a git command, but we were not able to execute it. Maybe git-pull is broken?이 수정 프로그램을 적용한 후, 사람이 할 수있는 어떤 아이디어가?
— Drew

앤드류이 못생긴하지만 난 자식-SH-설정 단계를 모두 교체했다 git으로 /usr/local/bin/git. 몇 가지 경우가 있었다 git교체했다 또한 자식 풀에
— jbnunn

3

공식적인 수정이 나오기 전에 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의 답변을 확인하십시오 ...


1

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/ 내부에 있다고 가정합니다.


1

git-pull 파일을 편집하고 그 위에이 줄을 추가합니다 (주석 블록 바로 뒤에).

PATH="$(dirname $0):$PATH"

또는 복사하여 터미널에 붙여 넣으십시오.

ed -s $(which git-pull) <<< $'6i\nPATH="$(dirname $0):$PATH"\n.\nwq'

업데이트 : 마지막 iTerm2 업데이트 (1.0.0.20140629) 이후 pilif가 추정 한대로이 재정의 git-pull없이 제대로 실행됩니다 PATH.


이것은 내 구성에서 한 단계 앞으로 나아가는 유일한 해결책 인 것 같습니다. PATH 줄을 추가 한 후 PULL을 시도 할 때이 오류가 발생합니다. git : 'credential-osxkeychain'is not a git command. 'git --help'를 참조하십시오. 어떤 아이디어?
— kiks73 2014


0

업데이트 : 여전히 아래 언급 된 릴리스에서 작동하지 않습니다. 내 실수입니다. 힘내 푸시가 작동합니다 힘내 풀이 작동하지 않습니다.

Mac OS X Yosemite 10.10 ( 14A329r )을 사용 하는 Apple에서 문제를 해결 한 것 같습니다 . 저는 일반 Beta Yosemite 채널 (개발자 아님)에 있습니다. 힘내 푸시 /손잡이 수정없이 다시 예상대로 작동합니다.


아니요, 14A329r에서 중복 된 환경 변수가 발생하여 해당 빌드에서 수정되지 않았습니다.
— Zr40 2014 년

@ Zr40 thx. 당신이 옳습니다. 어떻게 든 힘내 푸시가 이제 작동합니까? 나를 위해 그러나 힘내 풀은 여전히 ​​작동하지 않습니다.
— Frank Lämmer 2014 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.