我有一个名为的发布分支release/X.X.X.X
其中包含我想要部署到生产的所有功能分支。发布分支是在master
这是当前的生产状态。
在每个发布日,我都会确保我们的发布分支仅包含计划用于发布的更改。我使用此命令来比较发布分支和主分支:git log release/X.X.X.X ^master --no-merges
。然后,我手动检查诸如“SHR-1234”之类的关键字的提交,这些关键字代表我们的票证管理系统中的票证号。我需要将每次提交与票号列表进行比较,以识别不需要的更改。
如何过滤返回的提交git log release/X.X.X.X ^master --no-merges
and 不包含像“SHR-1234”这样的关键字?这样我就可以识别不需要的更改的票号。
我尝试了 grep 和 awk 但结果没有用,因为它们没有过滤掉整个提交。
The git log command https://www.kernel.org/pub/software/scm/git/docs/git-log.html这里提供了两个有趣的选项:
--grep=<pattern>
将提交输出限制为日志消息与
指定模式(正则表达式)。与不止一个--grep=<pattern>
,提交其消息与任何给定的匹配的
选择模式(但请参阅--all-match
).
什么时候--show-notes
生效后,注释中的消息是
匹配就好像它是日志消息的一部分一样。
Hence --grep
让你找到提交do包含一些特定的字符串或模式。你想要提交do not包含(任何或全部)字符串,所以我们继续:
--invert-grep
将提交输出限制为日志消息不匹配的提交输出
指定的模式--grep=<pattern>
.
(顺便说一下,请注意release/X.X.X.X ^master
也可以写成master..release/X.X.X.X
。没有机器层面的理由去选择其中一个而不是另一个——两者最终都会在内部做完全相同的事情——所以使用你认为更具可读性的那个。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)