如何比较两个git分支并通过提交消息过滤差异?

2024-01-28

我有一个名为的发布分支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(使用前将#替换为@)

如何比较两个git分支并通过提交消息过滤差异? 的相关文章

随机推荐