【发布时间】:2022-01-11 03:27:39
【问题描述】:
我有一个 Git 存储库,其中包含一个带有两个分支的 Java 库:main 和 jdk8。
jdk8 分支是主要的开发分支,所有更改都合并到 main 中,而 main 分支是模块化的并且基于 jdk11 ,包含 module-info.java 文件和 Gradle 构建文件中的更改、不同的构建插件和依赖项的模块化版本(如果可用)。两个分支的源代码本身几乎相同。
我想做的是停止在 jdk8 分支上进行开发并开始使用 main 作为主要开发分支,将更改合并到 jdk8 分支,从那里开始。
一些谷歌搜索让我找到了这些:
How to make empty merge commit (ignoring changes)?
Git - Ignore files during merge
于是我想出了这个策略:
git checkout jdk8
git merge -s ours main
我已经对此进行了测试,它看起来像预期的那样工作,也就是说,允许我开始在 main 上进行开发并将更改合并到 jdk8 分支中,不包括合并期间不属于那里的任何修改文件(例如,也许我可以使用 git 属性自动排除 module-info.java 文件)。
从表面上看,这似乎很容易处理,但由于我对 Git 的理解还很初级,我想知道这是否会在未来引起一些问题,是否有更好的(甚至“正确”?)这样做的方法?
【问题讨论】: