Git Branches - 如何在没有子模块的情况下拥有一个干净的发布分支

时间:2014-01-28 10:30:23

标签: git version-control github

我的项目有一个git repo,它基于GitFlow。我有一个主分支,开发分支(完成所有工作)和一个发布分支。

我的repo依赖于一些子模块,我想继续跟踪这些子模块,但是,我不希望我的发布分支完整地包含子模块(测试,文档等)我只是希望我的发布分支包含子模块的“产品”。

我的开发分支包含所有内容,master也是如此。开发定期合并为主。我的发布分支目前是高手,但我只想要一个干净的发布分支,而不是我的开发文件。

我附上了粗略的草图以防万一。 My Git Repo Sketch

我该怎么做?

1 个答案:

答案 0 :(得分:3)

通常,这种类型的清理是您的发布脚本的工作,即根据您的工作树切断发布档案(或您发布的任何其他内容)的过程。我想大多数人都没有看到需要在存储库中清理它。

当然,这并不意味着如果你愿意,你就不能这样做。您可以简单地'git rm'创建合并时不想保留的所有文件/路径(包括子模块)(git merge -n允许您更改合并内容,即使没有冲突)。这不是合并意味着使用的方式,但至少它不会使宇宙内爆。 只要你永远不会将发布分支合并回其他分支,或者基于它启动新的开发分支。

请注意,每次合并到发布分支时,您可能会在受影响的路径中遇到合并冲突,但这无法提供帮助。每次都重复同样的事情。

哦,只是为了涵盖所有基础:你不能只删除子模块的一部分 - 它是全部或全部。

PS。如果您还没有,请使用--no-ff合并到发布分支。这样,这些特定于分支的更改将在合并提交中“隐藏”,并且不会通过“删除这些文件”提交来破坏您的历史记录。