나는 다음 ~/bin/git-continue
과 ~/bin/git-abort
같은 스크립트를 가지고 있습니다.
#!/bin/bash
repo_path=$(git rev-parse --git-dir)
if [ $? -ne 0 ]; then
exit $?
fi
if [ -d "${repo_path}/rebase-merge" ]; then
git rebase --continue
elif [ -d "${repo_path}/rebase-apply" ]; then
git rebase --continue
elif [ -f "${repo_path}/MERGE_HEAD" ]; then
git merge --continue
elif [ -f "${repo_path}/CHERRY_PICK_HEAD" ]; then
git cherry-pick --continue
elif [ -f "${repo_path}/REVERT_HEAD" ]; then
git revert --continue
else
echo "No something in progress?"
fi
또한 다음 위치에 ~/bin
디렉토리 를 배치했습니다 .PATH
~/.bashrc
[[ ":$PATH:" != *":~/bin:"* ]] && PATH="~/bin:${PATH}"
export PATH
그래서 $ git-continue
제대로 작동하는지 확인했지만 git continue
다음과 같은 오류가 출력됩니다.
git: 'continue' is not a git command. See 'git --help'.
이 오류의 가능한 원인은 무엇을 찾을 수 있습니까?
답변1
확장되지 않은 가 PATH
포함되어 있습니다 ~/bin
. 귀하의 쉘은 의미를 이해 ~/
하지만 git
분명히 그렇지 않습니다. ~/bin
에 전체 경로를 포함해야 합니다 PATH
.
PATH=~/"bin:${PATH}"
대신 을 사용하면 PATH="~/bin:${PATH}"
물결표 확장이 발생하고 PATH
확장된 경로가 저장됩니다. 하지만 :~/bin:
내부 에 문제가 있습니다 [[ ]]
. 물결표를 인용하지 않는 것이 유일한 조건은 아니며( 의 "물결표 확장" 참조 man 1 bash
) 이로 인해 확장이 :~/bin:
어려워집니다. 그리고 .NET의 전체 경로에 대해 테스트하려면 이를 확장해야 합니다 PATH
.
사용하기가 더 쉽습니다 $HOME
.
[[ ":$PATH:" != *":$HOME/bin:"* ]] && PATH="$HOME/bin:${PATH}"
export PATH
$HOME
전체 문자열이 PATH
변수에 할당되기 전에 확장됩니다. 이는 PATH
이제 다음을 포함한다는 것을 의미합니다.가득한.$HOME/bin
git
이 길을 이해할 것이다.
답변2
당신은맞춤 별칭이 문제를 해결하려면. 별칭을 사용하는 것이 사용자 정의에 대해 알지 못하고 현재 명령에서 아무 것도 처리하지 않고 일련의 명령을 실행하려는 사람을 디버깅하는 것이 더 쉽기 때문에 더 바람직할 수 있습니다.
또한보십시오git 별칭에 bash 스크립트를 직접 포함하는 방법StackOverflow에서.
관심 있는 사람이라면 현재 이 동작에 대한 유일한 문서가원천대로그래서 질문그리고git-scm 문제.