Eu tenho ~/bin/git-continue
um ~/bin/git-abort
script, que se parece com isso:
#!/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
Eu também coloquei o diretório ~/bin
colocando PATH
isto em ~/.bashrc
:
[[ ":$PATH:" != *":~/bin:"* ]] && PATH="~/bin:${PATH}"
export PATH
Então, verifiquei que $ git-continue
funciona bem, mas git continue
gera o seguinte erro:
git: 'continue' is not a git command. See 'git --help'.
O que posso procurar pela possível causa desse erro?
Responder1
Seu PATH
contém não expandido ~/bin
. Seu shell entende o que ~/
significa, mas git
aparentemente não. Você deve incluir o caminho completo ~/bin
em seu arquivo PATH
.
Se você usasse PATH=~/"bin:${PATH}"
em vez de PATH="~/bin:${PATH}"
, a expansão do til ocorreria e PATH
armazenaria o caminho expandido. Mas há um problema :~/bin:
interno [[ ]]
. Não citar o til não é a única condição (veja "Expansão do Til" em man 1 bash
), isso dificulta a expansão :~/bin:
. E você precisa expandi-lo para testar o caminho completo no arquivo PATH
.
É mais fácil de usar $HOME
:
[[ ":$PATH:" != *":$HOME/bin:"* ]] && PATH="$HOME/bin:${PATH}"
export PATH
$HOME
é expandido antes que toda a string seja atribuída à PATH
variável. Isto significa PATH
que agora contém ocompletocaminho para o seu $HOME/bin
. git
entenderá esse caminho.
Responder2
Você poderia criar umalias personalizadopara contornar isso. Usar um alias pode ser preferível porque será mais fácil depurar para alguém que não está ciente de sua personalização e que atualmente não está manipulando nada em seu comando, mas apenas deseja executar uma série de comandos.
Veja tambémComo incorporar script bash diretamente dentro de um alias gitno StackOverflow.
Para qualquer pessoa interessada, parece que a única documentação para esse comportamento atualmente está nofonteconformeEntão perguntaeproblema do git-scm.