Я пытаюсь написать псевдоним для одновременного удаления локальной и удаленной ветки, но я не могу понять, почему синтаксис не работает. В ~/.gitconfig
я пробовал следующие псевдонимы, но каждый из них производит тот же результат, что неожиданно:
[alias]
nuke = !sh -c 'git branch -D $1 && git push origin :$1'
и
[alias]
nuke = !git branch -D $1 && git push origin :$1
оба производят:
$> git branch
* master
mybranch
$> git nuke mybranch
Everything up-to-date
$> git branch
* master
mybranch
Переключение порядка команд дает другой результат, но также не совсем то, что я ищу:
[alias]
nuke = !git push origin :$1 && git branch -D $1
...
$> git branch
* master
mybranch
$> git nuke mybranch
Everything up-to-date
Deleted branch mybranch (was d719895)
$> git branch
* master
$> git push origin :mybranch
To [email protected]:biegel/repo.git
- [deleted] mybranch
Когда я запускаю эту команду непосредственно в оболочке, она работает красиво:
$> git branch
* master
mybranch
$> git branch -D mybranch && git push origin :mybranch
Deleted branch mybranch (was d719895
To [email protected]:biegel/repo.git
- [deleted] mybranch
$> git branch
* master
Я попытался создать псевдоним в ~/.bashrc
, используя git push origin --delete $1
и используя функцию оболочки с !f() { };
, и ничего не происходит!
Я готов отказаться. Любые мысли о том, что мне здесь не хватает?
Спасибо.