【问题标题】:Add multiple git commands to one line for use in terminal alias将多个 git 命令添加到一行以在终端别名中使用
【发布时间】:2017-08-25 13:11:31
【问题描述】:

我正在尝试编写一个执行以下操作的新别名命令:

git push origin [current branch]

我有以下返回当前分支

git rev-parse --abbrev-ref HEAD

我不能锻炼:

a) 如何将两个命令添加到一行而不让它们按程序运行。例如,返回当前分支,然后在一行上运行它。我尝试了以下别名:

alias "gps cb"="git push origin \"git rev-parse --abbrev-ref HEAD\""

b) 如何有一个带有空格的别名,例如gps cb,我有一个单独的gps,所以我宁愿在别名中保留一个空格的模式,这样就不会太多了写gps mastergps cb的脑力劳动

【问题讨论】:

  • 为什么需要别名? git push 默认为当前分支和 origin 如果您不指定,这意味着 git push 应该已经完成​​了您的要求,或者我错过了什么?
  • 您可能希望使用git 别名而不是shell 别名,这样您就可以编写类似git pcb 的内容。未经测试,但我认为您会将alias.pcb = '!git push origin $(git rev-parse --abbrev-ref HEAD)' 添加到您的~/.git/config 文件中。

标签: git bash


【解决方案1】:

定义为:

push-branch() {
    git push origin "$(git rev-parse --abbrev-ref HEAD)"
}

用作:

$ push-branch

注意aliases cannot have spaces in them. 你需要一个函数。您可以将当前的 gps 别名替换为带参数的函数:

gps() {
    case "$1" in)
    cb) push-branch;;
    *) # whatever your current gps does ;;
    esac
}

【讨论】:

    【解决方案2】:

    你根本不需要别名定义,可以通过一个简单的函数调用来解决。

    git-push-origin() {
        git push origin "$(git rev-parse --abbrev-ref HEAD)"
    }
    

    只需从命令行调用函数git-push-origin。您也可以将函数定义添加到.bashrc 以在启动时加载它们。

    【讨论】:

      【解决方案3】:

      git 有自己的别名系统,所以你可以这样做

      git config --global alias.pushCurrent '!exec git push origin $(git rev-parse --abbrev-ref HEAD)'
      

      添加 git 命令

      git pushCurrent
      

      但是 git push 应该将当前分支的头部推到原点,所以你可能有一些特殊情况来证明额外的别名是合理的,你可以调整它以满足你的需要

      【讨论】:

        【解决方案4】:

        您可以使用替换 $() 将一个命令的输出用作另一个命令的参数。

        git push origin "$(git rev-parse --abbrev-ref HEAD)"
        

        别名或函数名中的空格是不可能的,但即使它们被允许,我认为你也不会想要使用它们,因为你必须转义空格才能调用它们("gps cb" 或 @ 987654324@).

        如果您已经定义了自己的gps 脚本并希望它根据第一个参数表现出不同的行为,则必须使用ifcase 语句来检查第一个参数。

        【讨论】:

          猜你喜欢
          • 2021-07-13
          • 2013-09-14
          • 2023-03-06
          • 2012-04-11
          • 2015-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-04
          相关资源
          最近更新 更多