0

我遵循传统的提交标准,我想制作一个 shell 函数来执行压缩,并使用解析的消息合并和提交更改,从而提高我的编码速度和我的提交一致性。

我的问题是解析参数,然后在提交消息中使用结果。

  • 我的实际代码:

    function git_merge_squash() {
      git merge --squash "$1"
      shift
      msg= echo $'\n'"$*" | tr . \\n | tr - ' '
      # echo $msg
      git commit -m $msg
    }
    
    alias gmrs=git_merge_squash
    
  • 使用示例:

    $ gmrs f/my_branch Features.- Signup.-- Save hashed password
    asynchronously.-- Retrieve token.- Login.-- Retrieve token.-
    Logout.-- Destroy token
    
  • 预期结果:

    git merge --squash f/my_branch
    git commit -m "
    Features
      Signup
        Save hashed password asynchronously
        Retrieve token
      Login
        Retrieve token
      Logout
        Destroy token"
    

您可以猜到,在我的实际代码中,我的注释echo准确地打印了我想要的消息。但是git commit -m命令$msg作为一个字符串。我尝试了多种其他选项,例如使用标志模拟文件输入-F,但我无法解决。

我怎样才能实现我的目标?先感谢您。

4

2 回答 2

0

您不需要为换行发明自己的编码;只需使用您想要的格式的第二个参数。

git_merge_squash() {
  git merge --squash "$1"
  git commit -m "$2"
}

gmrs f/my_branch "\
Features
  Signup
    Save hashed password asynchronously
    Retrieve token
  Login
    Retrieve token
  Logout
    Destroy token"
于 2017-10-23T00:33:18.293 回答
0

解决方案

我解决了。我希望有人能从中得到帮助。

  • 工作代码

    function git_merge_squash() {
      git merge --squash "$1"
      shift
      git commit -m "$(echo $'\n'"$*" | tr . \\n | tr - ' ')"
    }
    alias gmrs=git_merge_squash
    
于 2017-10-22T22:37:55.300 回答