仅合并 git 分支中的增量更改
Merge only delta changes in git branch
我们有 2 个 git 分支 - master 和 dev。 master 包含要部署到生产环境的文件,dev 只包含需要修改的文件。
在任何时候,master git 分支都会有 10 多个文件,而 dev 分支只有 1 个。
现在,问题是如果我们从 dev 合并 master,它会删除所有文件并只保留 dev 分支中可用的 1 个文件。
我们正在寻找的是保持所有来自 master 的文件不变,只更新来自 dev 的 1 个文件(类似于 rsync)。
知道我们如何在 git 中实现增量合并吗?
从本地 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
分支中你有
untouch all files from master and update only 1 file from dev
好像dev
所有的文件都有,后来有一段时间只保留了1个文件,其他的都删了。
当您想应用从 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
我们有 2 个 git 分支 - master 和 dev。 master 包含要部署到生产环境的文件,dev 只包含需要修改的文件。
在任何时候,master git 分支都会有 10 多个文件,而 dev 分支只有 1 个。
现在,问题是如果我们从 dev 合并 master,它会删除所有文件并只保留 dev 分支中可用的 1 个文件。
我们正在寻找的是保持所有来自 master 的文件不变,只更新来自 dev 的 1 个文件(类似于 rsync)。
知道我们如何在 git 中实现增量合并吗?
从本地 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
分支中你有
untouch all files from master and update only 1 file from dev
好像dev
所有的文件都有,后来有一段时间只保留了1个文件,其他的都删了。
当您想应用从 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