首页 > 解决方案 > 如何列出包含提交更改的所有标签?

问题描述

假设我有 2 个标签XY这样

tag X log history: C1 C2 ... Cn
tag Y log history: Z1 Z2 ... Zm

如果hash(Ci) = hash(Zj)(对于给定的iand j)并且我想知道所有具有提交的标签,Ci我可以这样做,如“https://stackoverflow.com/questions/7923091/how-to-list-all-tags-that-c​​ontain -a-commit",

git tag --contains Ci

那会给我XY

是否可以获得相同的响应,hash(Ci) != hash(Zj)但它们都应用了相同的更改(例如,它们都在同一个文件中添加了相同的行但它们在提交消息中不同)?


编辑

通过说标签“包含给定提交的更改”,我的意思是在标签的日志历史记录中,有一个提交C应用了与给定提交相同的修改。

标签: gitgit-commitgit-tag

解决方案


不,这不能通过标准git功能完全自动且可靠地完成。即使您不编辑提交消息,SHA-1 也会在挑选时发生变化。不能有 2 个具有相同 SHA-1 的提交。

对跟踪的一些支持由

  • git cherry-pick -x会将原始 SHA-1 插入到新提交的提交消息中。但是如果你忘记使用-x“链接”就会丢失。
  • git log "-S${string}" --all如果您知道一个对您的更改具有特征(足够)的字符串,则在所有分支中搜索更改。
  • 使用 Git,我如何在所有分支中搜索字符串?

问题想使用标签。但是标签也没有添加这样的神奇功能。

您将需要一个流程来在提交消息中进行必要的交叉引用。CI 可以强制执行此类流程


推荐阅读