Я использую iTerm2 с zsh, и с этим псевдонимом я получаю ошибку каждый раз, когда открываю новое окно или вкладку iTerm2.
alias clear-git-branches="git fetch -p && for branch in `git branch -vv | grep ': gone]' | awk '{print $1}'`; do git branch -D $branch; done"
Я получаю следующую ошибку:
fatal: not a git repository (or any of the parent directories): .git
Поскольку он выдает ошибку, связанную с тем, что каталог не является репозиторием git, я предполагаю, что у него возникла какая-то проблема с его кавычками. Я попробовал изменить его, но получил ту же ошибку.
Я использую эту команду для очистки локальных веток без вышестоящих.
решение1
Как указал Камил, поскольку вы используете двойные кавычки вместо одинарных, некоторые части команды анализируются, загружаются псевдонимы (т. е. когда вы открываете вкладку или окно в терминале).
Это выглядит нормально, когда вы запускаете его в терминале, потому что тогда все выполняется сразу.
Помещение всего в одинарные кавычки решило бы проблему, но создало бы проблемы с внутренними одинарными кавычками. Я рекомендую вместо этого переписать это как функцию. В этом случае вы можете использовать его так же, как вы использовали бы псевдоним.
clear-git-branches() {
git fetch -p && \
for branch in $(git branch -vv | awk '/: gone]/{print $1}');
do git branch -D "${branch}";
done
}
решение2
У меня была похожая или такая же проблема со следующим .zshrc
:
# use gcm to checkout master or main
alias gcm="git checkout $(git remote show origin | grep 'HEAD branch' | sed 's/.*: //') && git pull"
При открытии нового окна iTerm2 или окна терминала или перезагрузке среды я получил:
source ~/.zshrc
fatal: not a git repository (or any of the parent directories): .git
Закомментировав эту строку, проблема исчезла:
# alias gcm="git checkout $(git remote show origin | grep 'HEAD branch' | sed 's/.*: //') && git pull"
После переписывания; поменяв местами двойные и одинарные кавычки:
alias gcm='git checkout $(git remote show origin | grep "HEAD branch" | sed "s/.*: //") && git pull'
Ошибка исчезла.