【问题标题】:Comparing two Tags across two different Branches比较两个不同分支中的两个标签
【发布时间】:2019-03-31 13:48:24
【问题描述】:

我正在尝试找到一个示例,如何比较两个不同分支中的两个标签,以便生成补丁文件。假设我有两个分支,Dev 和 Prod。生产有 Rel-01 标签,Dev 有 Rel-02 标签。简而言之,我想运行类似:

git diff Dev/Rel-02 Prod/Rel-01 > dev.patch

然后切换到Prod分支运行

git apply dev.patch

我找到了许多参考资料,如何比较同一分支或两个不同分支中的两个提交或标签,但没有找到如何比较不同分支中的两个提交(标签)的场景。检查其中一个分支并运行 git diff 也可以,但问题仍然存在 - 如何在另一个分支上正确引用 Tag。

【问题讨论】:

  • 在这里使用git cherry-pick会有什么问题?老实说,我使用 Git 已经有将近 10 年的时间了,我不得不应用补丁的次数只能靠一只手来计算。
  • 我在下面提供了一些信息;这个想法是使用补丁文件作为跨多个暂存环境传递更改的一种方式,其中每个暂存环境都有自己的分支。它是 Salesforce 项目,因此有很多元数据要从一个环境传递到另一个环境。想法是使用补丁文件来强制开发尽早提供正确的文件,并在发布更高版本时消除合并错误

标签: git diff patch


【解决方案1】:

结果

git diff tag-1 tag-2

与你树上的任何树枝都没有关系。 tag-1tag-2 是否在同一个分支上,与差异无关。您不妨删除所有分支并再次运行该差异并得到相同的结果。

在哪里您应用该差异的补丁可能是您关心的重点,我猜,但到目前为止,我们对您的上下文的细节知之甚少。也许考虑指出补丁应用部分的特定问题。

【讨论】:

  • 所以标签没有被分支命名空间?我认为标签命名空间是相对于分支的。如果不是,那么这是我要考虑的另一个方面。
  • 它在 Salesforce CI\CD 中使用,其中多个环境之间的分段用于将新版本推送到生产(Dev -> Dev-Integration -> Test -> Integration Test -> Pre-Production ->生产)。每个环境 (Salesforce) 都有自己的分支。想法是:使用补丁文件可以将补丁创建推向开发,如果经过测试,那么在更高级别的环境中部署补丁应该没有错误。问题是当整个元数据包从一个环境推送到另一个环境时,人们在合并过程中会犯很多错误。
  • @PetrLazecky 不,标签在整个仓库中都有命名空间,而不是专门沿着分支分开。
  • 请再问一个问题 - 如果我使用来自远程仓库的标签配置远程跟踪分支 - 这些引用不同,对吧?由于这些标签来自不同的仓库,我假设 Git 需要知道如何区分我的仓库的提交对象和来自远程仓库的提交对象。
猜你喜欢
  • 2017-08-10
  • 1970-01-01
  • 2021-03-13
  • 2011-05-05
  • 1970-01-01
  • 2012-10-29
  • 2014-12-25
  • 2015-10-22
  • 1970-01-01
相关资源
最近更新 更多