2016-04-25 88 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>"