【问题标题】:Merge only delta changes in git branch仅合并 git 分支中的增量更改
【发布时间】:2019-04-13 08:28:42
【问题描述】:

我们有 2 个 git 分支——master 和 dev。 master 包含要部署到生产环境的文件,而 dev 只包含需要修改的文件。

在任何时候,主 git 分支都会有 10 多个文件,而开发只有 1 个。

现在的问题是,如果我们从 dev 合并 master,它会删除所有文件并只保留 dev 分支中可用的 1 个文件。

我们正在寻找的是保持 master 中的所有文件不变,只更新 dev 中的 1 个文件(类似于 rsync)。

知道如何在 git 中实现增量合并吗?

【问题讨论】:

    标签: git merge delta


    【解决方案1】:

    似乎dev 拥有所有文件,后来有时只保留了一个文件,而其他文件则被删除。

    当你想应用从devmaster 的提交时,你可以使用git cherry-pick ${commit_from_dev}

    如果您打算使用git merge,从一开始就应该将dev 创建为孤儿分支。换句话说,dev 在创建时不应与master 共享任何历史记录。

    # at the point of creating dev
    git checkout --orphan dev master
    git rm ${unwanted_files}
    git commit -m 'init dev'
    
    # the first time to merge dev
    git checkout master
    git merge dev --allow-unrelated-histories
    

    【讨论】:

      【解决方案2】:

      从本地 master 创建一个新分支,然后将文件签出到 dev 分支

      $ git checkout master    # checkout master
      $ git checkout -b dev2   # checkout new branch called 'dev2' with master history
      
      $ git checkout dev -- <file-path> # checkout/update the file from 'dev' branch
      

      现在,在dev2 分支中,您拥有

      取消处理 master 中的所有文件,只更新 dev 中的 1 个文件

      【讨论】:

        猜你喜欢
        • 2016-01-05
        • 2011-09-29
        • 1970-01-01
        • 2020-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-01
        相关资源
        最近更新 更多