2009-09-29 5 views
2

분기를 전환 한 후 가상 서버를 다시 시작하고 내 .gitconfig에 일부 별칭을 추가하려고 시도했지만 작동하지 않았습니다.분기를 전환 할 때 외부 명령 호출

co = checkout | !rap 

은 랩 스크립트 만 실행합니다.

co = checkout && !rap 

내가 노력 다른 가지 (checkout $1를 같은) 내 "즐 ~ 즐 자식 사용"을 제공합니다.

+0

물론 나는 계산을하려고했습니다. 나는 다른 사람들처럼 커피 부족을 비난 할 것이다. –

+0

질문을 수정하여 문제를 해결할 수 있습니다. –

답변

3

내 생각에, 실제로 원하는 것은 post-checkout 후크입니다 (.git/hooks/ 디렉토리와 githooks manpage을보십시오).

+0

고마워.하지만 .. 시도 했어. #!/bin/sh echo "foo" .git/hooks/post-checkout과'chmod + x post-checkout'에 echo하지만 git-checkout은 아무 것도 울리지 않는다! –

+0

방금 ​​확인했는데 반향이 있습니다. './. git/hooks/post-checkout'을 직접 실행하면 어떻게됩니까? –

+0

직접 실행하면 문제가 없습니다. 나는'git-init'을 시도해 보았지만 문제가되지 않았습니다. –

6

hacker's answer에 기록 된대로 문제에 대한 올바른 솔루션은 단순히 post-checkouthook를 사용 될 수 있습니다.

다음은 당신의 질문에 대한 추적 할 수없는 가망 솔루션이있다.


예를 들어 별칭에서 단일 별표 명령을 사용합니다.

[alias] 
    alias = config --get-regexp ^alias\\. 

또는 '!' 접두사, 아마도 "sh -c"트릭을 사용합니다. 그러면 "git 명령"을 철자해야합니다.

[alias] 
    sed = !git ls-files --stage | grep ^100 | awk '{print $4}' | xargs sed 
    who = "!sh -c 'git log -1 --pretty=\"format:%an <%ae>\" --author=\"$1\"' -" 

(alias.sed이 최선의 해결책입니다). 이전이 succesfull 경우 다음 명령을 수행하면, 다음 "rap"의미

[alias] 
    br = !sh -c 'git checkout "$0" && rap' 

여기 && 시도 "git checkout <somebranch>을"할 "git br <somebranch>"에 대해 원하는 경우


. 당신은

BTW는 "git checkout <branch>"을 사용하여 가지를 전환 하지 않는 관계없이 이전 명령의 상태의 명령을 실행하는 대신 ;를 사용할 수 있습니까? "git branch <branchname>"은 체크 아웃하지 않고 분기를 만듭니다.

+0

그것은 정말 내 질문에 대한 해결책이 아니지만 매우 일반적입니다. 나는'co = "! sh -c 'git checkout \"$ 1 \ "'랩 -"'과'co =! git checkout $ 1 | 랩 -'그리고 그것은 여전히 ​​랩을 실행합니다. –

+0

Errr ... "''''는 명령의 출력을 파이프하는 것을 의미합니다 (앞의 표준 출력을 나중에 명령의 표준 입력으로 연결). ""&&' "또는"';''을 사용해야합니다. 업데이트 된 답변도 참조하십시오. * 질문 *에 대답하기 위해 +1 –

+1

+1. stackexchange 사이트의 주된 실패는 수락 된 대답이 묻는 질문과 아무런 관련이 없다는 것입니다. 대신 대답은 질문 뒤에 필요한 것, 즉 질문자에게 유용하며 나중에 검색하는 사람들에게는 유용하지 않습니다. – chris

관련 문제