【问题标题】:Compare uncommitted hotfixes in prod with git branch将 prod 中未提交的修补程序与 git 分支进行比较
【发布时间】:2019-05-15 10:49:37
【问题描述】:

我们使用 git 来存储源代码,并使用 master/release/develop 作为主要分支。通常我们创建新分支以添加新功能,然后合并以开发和发布。但是当生产需要立即修复时,我们直接在 prod 中更改代码并创建 hotfix 分支,然后将其与所有 3 个主要分支合并。

我想将 prod 中这些未提交的更改与 git 进行比较,尤其是发布和开发分支,它们有一天会成为新的 master - 只是为了确保没有人忘记从 prod 提交一些更改。

手动我可以使用 git diff 并比较它是否与发布分支合并但它不够快而且它是手动的。

你能帮我如何比较未提交的更改与 git 内容吗?

【问题讨论】:

    标签: git production hotfix


    【解决方案1】:

    任何你手动做的东西都可以转换成脚本

    例如,如果您想比较 3 个分支:

    git diff <b1> <b2> <b3>
    

    如果您愿意,您还可以在分支之间生成补丁文件并再次用脚本包装它。你的脚本可以成为你的别名

    # extract all commits as patches, each one inits own patch file
    git format-patch <b1> <b2>
    
    # generate a single patch per changes
    git diff <b1> <b2> > patch.txt
    

    一旦你有了你的脚本,你就可以使用 git hooks 或 CI/CD 进程,这将在合并时触发并为你生成补丁。

    这是一个示例脚本:

    #!/bin/sh
    
    # loop on the desired branches (you can pass them as arguments as well)
    for branch in b1 b2
    do
        # generate the patch file and write it to a file with the branch name
        git diff master..$branch > $branch.txt
    done;
    

    【讨论】:

    • 所以我可以使用git fetchgit diff origin/release 但是我还看到了其他未在产品中修复的版本更改 - 差异结果更大。我可以以某种方式限制与本地更改的比较吗?
    猜你喜欢
    • 2015-09-02
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 2018-03-30
    • 2020-05-22
    相关资源
    最近更新 更多