我正在尝试为与编程相关的教程设置版本控制。事实证明这是有问题的,因为有两种不同的历史:
教程中有正在构建的项目的历史,它可用于每一章,并且是读者将看到的。如果我从不打算再次更改教程中已经编写的章节,我可以将每个章节作为标签存储在项目的历史记录中。
然后还有教程本身的历史(不仅是文本,还有我在项目的假装历史上的工作)。如果我在第 1 章中发现需要返回并修复的错误,则在末尾添加新提交不起作用,因为我想更改项目在该阶段“出现”的方式,即在项目历史记录中插入提交并将章节标签向前移动。
到目前为止,我已经考虑了一些可能性 - 使用 git 分支,其中每一章都是一个分支,每当我进行更改时,它都会重新定位到前一章的前面,一个我插入补丁的可变补丁队列,或者构建教程围绕一组我可以放入子存储库的模块。
我想我会问是否有人有这种事情的经验以及哪些解决方案有效而没有。
最佳答案
与其因为早期章节的后期修复而重写所有项目的历史,我宁愿将每个章节隔离在自己的分支中,让每个 HEAD
代表每一章的当前状态。
组装所有教程更多的是一个发布管理问题(通过从 Git Repo 中提取相关信息来部署您的教程)。
然后,您可以开发您的教程以实现类似于 git immersion 的内容。 .
(注意:如果这更像是一本电子书,那么 git-scribe 会是更有趣的版本化方式。)
OP rusky在评论中添加:
I'm trying to version the sample code for the chapters, where each chapter's code is based on the previous chapter's code
这意味着您添加的任何错误修复都需要报告给代表其他章节的其他分支,在这种情况下,请参阅:
rebase --onto
solution 关于version-control - 教程的版本控制设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5924302/