我的项目有一个git repo,它基于GitFlow。我有一个主分支,开发分支(完成所有工作)和一个发布分支。
我的repo依赖于一些子模块,我想继续跟踪这些子模块,但是,我不希望我的发布分支完整地包含子模块(测试,文档等)我只是希望我的发布分支包含子模块的“产品”。
我的开发分支包含所有内容,master也是如此。开发定期合并为主。我的发布分支目前是高手,但我只想要一个干净的发布分支,而不是我的开发文件。
我附上了粗略的草图以防万一。
我该怎么做?
答案 0 :(得分:3)
通常,这种类型的清理是您的发布脚本的工作,即根据您的工作树切断发布档案(或您发布的任何其他内容)的过程。我想大多数人都没有看到需要在存储库中清理它。
当然,这并不意味着如果你愿意,你就不能这样做。您可以简单地'git rm'创建合并时不想保留的所有文件/路径(包括子模块)(git merge -n
允许您更改合并内容,即使没有冲突)。这不是合并意味着使用的方式,但至少它不会使宇宙内爆。 只要你永远不会将发布分支合并回其他分支,或者基于它启动新的开发分支。
请注意,每次合并到发布分支时,您可能会在受影响的路径中遇到合并冲突,但这无法提供帮助。每次都重复同样的事情。
哦,只是为了涵盖所有基础:你不能只删除子模块的一部分 - 它是全部或全部。
PS。如果您还没有,请使用--no-ff
合并到发布分支。这样,这些特定于分支的更改将在合并提交中“隐藏”,并且不会通过“删除这些文件”提交来破坏您的历史记录。