代码之家  ›  专栏  ›  技术社区  ›  Adam

在bash中为git命令提供参数

  •  0
  • Adam  · 技术社区  · 6 年前

    我不太了解bash,我现在有个别名:

    alias pushAndTrackBranch="git push -u origin" #Append branchname
    

    之后我手动键入我的Git分支名称。我想自动使用当前分支,因此我发现:

    git branch | grep \* | cut -d ' ' -f2
    

    并试图将它们结合起来:

    git branch | grep \* | cut -d ' ' -f2 | git push -u origin
    git push -u origin | git branch | grep \* | cut -d ' ' -f2
    git branch | grep \* | cut -d ' ' -f2 | pushAndTrackBranch
    git branch | grep \* | cut -d ' ' -f2 | echo | pushAndTrackBranch
    

    我没能用管道找到答案,所以我想作为bash_概要文件的开始,我会将分支名称分配给一个变量并打印出来:

    function pushAndTrack {
      myBranch=$(grep \* | cut -d ' ' -f2)
      echo myBranch
    }
    

    以上是我最新的化身,但并不正确。我如何把这两件事结合起来?我是否应该将分支名称保存在变量中?

    编辑:我在函数尝试中看到我忘记了我试图保存在变量中的部分命令。当然应该是:

    function pushAndTrack {
      myBranch=$(git branch | grep \* | cut -d ' ' -f2)
      echo $myBranch
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Jonathon McMurray    6 年前
    git push -u origin $(git branch | grep '\*' | cut -d ' ' -f2)
    

    这应该能完成任务。piping将前一个命令的输出传递给stdin以执行下一个命令,而不是作为命令行参数。

    您还可以使用 xargs (man page)