1 linux git bash shell makefile
我有以下命令,我想通过“ makefile”通过一个命令执行该命令?
1. git tag -a v0.0.1 -m "new release"
2. git push origin v0.0.1
Run Code Online (Sandbox Code Playgroud)
现在我已经创建了一些开始
git:
git add .
git commit -m "$m"
git push origin master
Run Code Online (Sandbox Code Playgroud)
现在有两个问题,如何解决版本问题,例如,这里是v0.0.1,但是对于每个新发行版,我都需要修改它,例如第一个是v0.0.1,下一个发行版应该是v0.0.2,是否可以自动完成(也许有柜台...)?如果不是,也许将其作为参数添加到一个命令中
更新
有以下看起来好的回答
git describe --tags --abbrev=0 | awk -F. '{$NF+=1; OFS="."; print $0}'
Run Code Online (Sandbox Code Playgroud)
但是我应该如何结合呢?
更新2
当我尝试以下建议作为凯文答案中的建议时,出现错误:
.PHONY:git
VERSION =git describe --tags --abbrev=0 | awk -F. '{$NF+=1; OFS="."; print $0}'
git:
git add .
git commit -m "$m"
git push origin master
git tag -a $(VERSION) -m "new release"
git push origin $(VERSION)
Run Code Online (Sandbox Code Playgroud)
错误是: fatal: tag 'ERSION' already exists
似乎无法正常工作,并且以某种方式v从版本中删除了
我进行了另一项检查,删除了回购协议,并为第一个发行版从头开始手动启动它,0.0.1现在我确实更改了一个文件并运行了脚本,该版本现在应该是0.0.2成功的,但是没有提示错误的fatal: tag 'v0.0.1' already exists原因是不起作用,知道为什么吗?
我想这与代码''{$ NF + = 1; OFS =“。”; 打印$ 0}'
使用最后按下的标签,您可以自动增加版本号:
git describe --tags --abbrev=0 | awk -F. '{$NF+=1; OFS="."; print $0}'
Run Code Online (Sandbox Code Playgroud)
请记住,您将其存储在变量中并用于tag和push:
VERSION=`git describe --tags --abbrev=0 | awk -F. '{$NF+=1; OFS="."; print $0}'`
git tag -a $VERSION -m "new release"
git push origin $VERSION
Run Code Online (Sandbox Code Playgroud)
git describe-显示可通过提交访问的最新标记
--tags-启用匹配轻量级(无注释)标签的功能。
--abbrev = 0-将取消长格式显示,仅显示最接近的标记。
awk -F -使用“。”的处理模式。作为分隔符
'{$ NF + = 1; OFS =“。”; print $ 0}' -仅递增最后一个数字并与“。”连接。
生成文件:
.PHONY: git
git:
$(eval VERSION=$(shell git describe --tags --abbrev=0 | awk -F. '{$$NF+=1; OFS="."; print $0}'))
git add .
git commit -m "$m"
git push origin master
git tag -a $(VERSION) -m "new release"
git push origin $(VERSION)
Run Code Online (Sandbox Code Playgroud)