在git中选择要发布的内容

时间:2017-03-04 15:45:43

标签: git versioning

这可能是重复的,但是经过GitHub help page关于创建发布,并经过SO上的很多帖子后,我还没找到我要找的东西。

我已经使用git了一段时间,我经常发现自己处于master中的部分内容已准备好被共享的情况,但其他部分仍需要进行优化,进一步测试或重构。我可以创建一个新的分支并删除我还不想发布的内容,但这仍然保留了他们的历史记录,而对于下一个版本,我无法简单地将改进与子集合并每次都没有从一个全新的分支开始的新内容。

我真正想要做的是选择准备发布的文件夹和文件,仅筛选这些文件的相关历史记录,并在此新历史记录之上重新定义不在发行版中的任何内容。我意识到这是一种重写历史记录"的形式,但有没有办法用git做到这一点?如果没有,那么"适当的"创建具有相关历史记录的版本的方法,可以在以后合并?

2 个答案:

答案 0 :(得分:1)

最简单的解决方案可能会保留一个单独的release分支,其中包含您想要公开的文件,然后是selectively merge in the files you want changed from master。这样,只有您想要更改的特定文件才会更新。

答案 1 :(得分:1)

使用子目录过滤器和prune-empty开关尝试git filter-branch。确保你知道自己在做什么,因为这是一个非常有创意的命令。阅读整个手册页https://git-scm.com/docs/git-filter-branch

至于将历史的其余部分放在首位,我认为冲突的数量将完全令人望而却步,除非你的历史非常短暂。此外,如果您正在讨论重新定位主要开发分支,那么当开发人员将新版本拉入其各自的本地克隆时,这将会带来麻烦。