仅合并git分支中的增量更改

时间:2019-04-13 08:28:43

标签: git merge delta

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

在任何时候,专家分支将有10多个文件,而开发人员只有1个文件。

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

我们正在寻找的是取消master上的所有文件,只更新dev中的1个文件(类似于rsync)

任何想法我们如何在git中实现增量合并?

2 个答案:

答案 0 :(得分:1)

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

当您要将提交从dev提交到master时,可以使用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

答案 1 :(得分:0)

从本地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分支中

  

取消修改主文件中的所有文件,仅更新dev中的1个文件