【发布时间】:2013-05-20 08:49:35
【问题描述】:
我正在尝试编写一个别名来同时删除本地和远程分支,但我无法弄清楚为什么语法不起作用。在~/.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 git@github.com:biegel/repo.git
- [deleted] mybranch
当我直接在 shell 上运行该命令时,它运行良好:
$> git branch
* master
mybranch
$> git branch -D mybranch && git push origin :mybranch
Deleted branch mybranch (was d719895
To git@github.com:biegel/repo.git
- [deleted] mybranch
$> git branch
* master
我尝试在~/.bashrc 中创建别名,使用git push origin --delete $1 并使用带有!f() { }; 的shell 函数,但似乎没有任何效果!
我准备放弃了。对我在这里缺少什么有什么想法吗?
谢谢。
【问题讨论】:
标签: git shell command alias git-alias