2016-04-25 87 views
1

我通常会忘记如何从两个不同的Mac推送到同一个heroku应用程序,所以我总是在谷歌直到找到命令git add remote heroku [email protected]:my_project.git为'git add remote ...'创建鱼别名'

我想为这个命令创建一个别名,我只需要使用别名和应用程序名称作为参数,如下所示:herokuadd thenameofmyapp

我试图使用别名herokuadd git remote add heroku [email protected]:$argv.git创建它,但它不起作用,不知道为什么。

回答

4

当您使用alias时,Fish会将您的ARGV附加到命令的末尾。尝试走样东西echo看到:

alias herokuadd "echo [email protected]:$argv.git" 
herokuadd foo 
# [email protected]:.git foo 

如果你写一个function相反,你可以内联$argv[1]

function herokuadd 
    echo [email protected]:$argv[1].git 
end 
herokuadd foo 
# [email protected]:foo.git 
+0

谢谢,它的工作!我只需要删除[1]部分。 – Miguelopezv

+0

真的吗?既然你只有一个参数,'$ argv'和'$ argv [1]'在这种情况下应该表现相同(并且在我的测试中出现)。 –

+0

我知道,但不知何故,它回应了'theres no git repository'之类的东西,我无法完全记得它。 – Miguelopezv

3
git config --global alias.herokuadd '!herokuadd() { git remote add heroku [email protected]:$1.git; }; herokuadd' 

应该是你以后的样子。

+0

正如标题所说,我不使用bash,我使用的鱼:http://fishshell.com/。 – Miguelopezv

+0

啊,对不起,不知道鱼,现在我明白了。 :-)但是,为什么你不使用我建议的git别名,或者这在你的设置中不起作用? – Vampire

1

的Git别名可以在命令行

在这里得到的参数是用样本IM:

[alias] 
    ra = "!f() { git remote add $1 https://bitbucket.org/$2.git; }; f" 

您可以随时添加更多的命令与;分离或&&如果您执行多个命令希望在同一时间添加远程和拉。

另一种选择是使用脚本与git别名。
这里是如何执行脚本的例子:由于您使用的鱼,你可以设置

[alias] 
    l = "!bash -c 'source ~/.githelpers && pretty_git_log'" 

在你的情况下,乌尔硬编码(将在所有的机器相同),并简单地使用git的别名没有任何参数。

[alias] 
    set_remote = "git remote add <name> <url>"