复制bash中的文件,使用当前日期和当前(签出)git分支名称重命名其目标

时间:2017-11-05 19:33:43

标签: git bash

出于工作流程的目的,我想写一个bash脚本,我在其中复制一个文件,用当前日期和当前git分支名称重命名它,如下所示:

$ cp test.txt test-$(date +'%Y-%h-%d')-$(__git_ps1).txt

说我在名为feature的分支中,输出文件名将是(今天的日期):

test-2017-Nov-5-feature.txt

对于日期部分(2017-Nov-5),它工作正常,但我很难通过$(__git_ps)

将其与当前git分支名称一起输出

我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

解答:

您的命令问题是由__git_ps1生成的前导空格。

您可以使用以下命令删除所有空格:

cp test.txt test-$(date +'%Y-%h-%d')-$(__git_ps1 | tr -d '[:space:]').txt

但是这样输出仍然包含我认为你不想要的'('和')'(参见替代解决方案)

注意

可能的'分支名称中的斜杠'问题(由@HuStmpHrrr突出显示)可以通过删除(如使用空格完成)或转换为兼容字符(| tr '/' '_')来以类似的方式解决/ p>

输出

正常

  

test-2017-Nov-06-(master).txt

如果分离的工作空间

  

测试-2017-NOV-06 - ((2af977d ...))的txt

替代命令:

尝试使用

cp test.txt test-$(date +'%Y-%h-%d')-$(git rev-parse --abbrev-ref HEAD).txt

输出

正常

  

测试-2017-NOV-06-master.txt

如果分离的工作空间

  

测试-2017-NOV-06-HEAD.txt