首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在git中只合并一个子目录?

有没有办法在git中只合并一个子目录?
EN

Stack Overflow用户
提问于 2019-09-11 23:39:26
回答 2查看 909关注 0票数 3

我们在项目中有两个目录:backend & frontend。我们正在处理相同的功能分支,让我们称其为feature-branch,FE和BE。

FE仅向frontend目录添加更改,仅向backend目录添加更改。

现在,我想将master合并到feature-branch。然而,在BE和FE中都存在冲突。我是工程师,所以我不知道如何解决FE冲突。有没有一种方法可以只合并BE目录中的更改,推送这些更改,然后要求FE工程师合并FE更改?

附注:feature-branch是我们的主要功能分支。我们从该分支创建子分支,并将PR指向该feature-branch。我们不会直接推送到那个分支。

EN

回答 2

Stack Overflow用户

发布于 2019-09-12 00:34:20

如果您想要在各个部分中进行合并,请进行部分合并,然后合并这些合并。你想让你的历史记录看起来如何取决于你自己,对于合并,Git唯一关心的语句是"this is a merge of these“。

要做到这一点,最令人痛苦的正确方法可能是两个部分合并都独立完成,

一次部分合并,而不是功能分支,只有后端:

代码语言:javascript
复制
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

然后只使用前端:

代码语言:javascript
复制
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

现在合并结果:

代码语言:javascript
复制
git checkout feature
git merge WIP/{frontend,backend}-master-merge

这样特性分支上就不会出现任何不能通过集成测试的东西。通过直接在feature分支上执行一个部分合并,然后再合并另一个部分结果,您可以获得更简单的命令序列和更简单的历史记录。

票数 1
EN

Stack Overflow用户

发布于 2019-09-12 00:00:43

执行合并,然后签出所需的目录

代码语言:javascript
复制
git merge --no-commit FE
git checkout HEAD PATH_TO_FRONT_END
git add FILES
git commit -m "Just BE changes!"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57892563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档