我们在项目中有 2 个目录:backend
和 frontend
。我们在同一个功能分支上工作,我们称它为 feature-branch
,FE 和 BE。
FE 仅对 frontend
目录添加更改,BE 仅对 backend
目录添加更改。
现在我想 merge master
到 feature-branch
。但是,BE 和 FE 都存在冲突。我是BE工程师,所以我不知道如何解决FE冲突。有没有办法只 merge 来自 BE 目录的更改,推送这些更改,然后让 FE 工程师 merge FE 更改?
附注feature-branch
是我们的主要功能分支。我们正在从那个分支创建子分支,并将我们的 PR 指向那个 feature-branch
。我们不会直接推送到那个分支。
最佳答案
如果您想分部分进行 merge ,先进行部分 merge ,然后再 merge 。您希望您的历史之后如何看取决于您,Git 唯一关心 merge 的声明是“这是这些祖先的正确 merge ”。
最令人痛苦的正确方法可能是自己进行两个部分 merge ,
部分 merge ,不 merge 到功能分支,只有后端:
git checkout feature^0 # checkout the feature commit bare, this is a wip
git merge --no-commit master # merge master, with manual changes
resolve all the backend conflicts, then
git checkout @ -- frontend # restore untouched frontend directory
git commit -m "backend-only merge of branch 'master'"
git tag WIP/backend-master-merge
然后只用前端来做:
git checkout feature^0 # checkout the feature commit bare, this is a wip
git merge --no-commit master # merge master, with manual changes
resolve all the frontend conflicts, then
git checkout @ -- backend # restore untouched backend directory
git commit -m "frontend-only merge of branch 'master'"
git tag WIP/frontend-master-merge
现在 merge 结果:
git checkout feature
git merge WIP/{frontend,backend}-master-merge
这样功能分支上就不会出现无法通过集成测试的内容。通过直接在功能分支上执行其中一个部分 merge ,然后再 merge 另一个部分结果,您可以获得更简单的命令序列和更简单的历史记录。
关于git - 有没有办法在git中只 merge 一个子目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57892563/