我们有2个git分支-master和dev。主文件包含要部署到生产环境的文件,而dev文件仅包含需要修改的文件。
在任何时候,专家分支将有10多个文件,而开发人员只有1个文件。
现在的问题是,如果我们合并来自dev的master,它将删除所有文件,并仅保留dev分支中可用的1个文件。
我们正在寻找的是取消master上的所有文件,只更新dev中的1个文件(类似于rsync)
任何想法我们如何在git中实现增量合并?
答案 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个文件