【问题标题】:Create Fish alias for 'git add remote...'为 'git add remote...' 创建 Fish 别名
【发布时间】:2016-04-25 14:30:24
【问题描述】:

我通常忘记如何从两台不同的 Mac 推送到同一个 heroku 应用程序,所以我总是在 google 中查找直到找到命令 git add remote heroku git@heroku.com:my_project.git

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

我尝试使用别名 herokuadd git remote add heroku git@heroku.com:$argv.git 创建它,但它不起作用并且无法弄清楚原因。

【问题讨论】:

    标签: git heroku alias fish


    【解决方案1】:

    当您使用alias 时,Fish 只是将您的 ARGV 附加到命令的末尾。尝试为echo 起别名以查看:

    alias herokuadd "echo git@heroku.com:$argv.git"
    herokuadd foo
    # git@heroku.com:.git foo
    

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

    function herokuadd
      echo git@heroku.com:$argv[1].git
    end
    herokuadd foo
    # git@heroku.com:foo.git
    

    【讨论】:

    • 谢谢,它的工作!我只需要删除 [1] 部分。
    • 真的吗?因为无论如何你只有一个参数,$argv$argv[1] 在这种情况下应该表现相同(并且在我的测试中出现)。
    • 我知道,但不知何故它呼应了“没有 git 存储库”之类的东西,我记不清了。
    【解决方案2】:
    git config --global alias.herokuadd '!herokuadd() { git remote add heroku git@heroku.com:$1.git; }; herokuadd'
    

    应该是你所追求的。

    【讨论】:

    • 啊,对不起,不认识Fish,现在我明白了。 :-) 但是你为什么不像我建议的那样使用 git 别名,或者这在你的设置中不起作用?
    【解决方案3】:

    Git 别名可以从命令行获取参数

    这是我使用的示例:

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

    如果您希望同时添加远程和拉动,您可以随时添加更多以;&& 分隔的命令来执行多个命令。

    另一种选择是使用带有 git 别名的脚本。
    以下是如何执行脚本的示例:

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

    在您的情况下,由于您使用的是 fish,您可以设置 ur 硬编码(在您的所有机器上都相同)并简单地使用 git 别名而不带任何参数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-01
      • 2011-06-18
      • 2023-02-02
      • 1970-01-01
      • 2020-01-26
      • 2017-09-12
      • 2015-07-20
      • 2015-01-12
      相关资源
      最近更新 更多