教程的版本控制设置

2023-12-03

我正在尝试为与编程相关的教程设置版本控制。事实证明这是有问题的,因为有两种不同的历史:

本教程提供了项目构建的历史记录,每个章节都提供了该项目的历史记录,读者将看到这些历史记录。如果我从未打算再次更改教程中已编写的章节,我可以将每个章节作为标签存储在项目历史记录中。

然后还有教程本身的历史(不仅是文本,还有我对项目假装历史的研究)。如果我发现一个错误,我需要返回并在第 1 章中修复,那么在末尾添加新的提交是行不通的,因为我想更改项目在该阶段“出现”的方式,即在项目历史记录中插入提交并将章节的标签向前移动。

到目前为止,我已经考虑了几种可能性 - 使用 git 分支,其中每一章都是一个分支,每当我进行更改时,它就会重新定位到前一章的前面,我插入补丁的善变补丁队列,或者构建教程围绕一组我可以放入子存储库的模块。

我想我应该问是否有人有此类事情的经验,以及哪些解决方案有效,哪些无效。


我宁愿将每个章节隔离在其自己的分支中,而不是因为对早期章节的后期修复而重写所有项目的历史,HEAD代表每个章节的当前状态。
组装所有教程更多的是一个发布管理问题(通过从 Git Repo 中提取相关信息来部署教程)。

然后您可以开发您的教程来实现类似的目标git 沉浸式.

(注:如果这更像是您想要的电子书,那么git 抄写员这将是一种更有趣的版本控制方式。)


The OP rusky在评论中添加:

我正在尝试对章节的示例代码进行版本控制,其中每一章的代码都基于前一章的代码

这意味着您添加的任何错误修复都需要报告给代表其他章节的其他分支,在这种情况下请参阅:

  • 在 Git 中,如何将错误修复的提交应用到其他较新的分支?(避免挑选樱桃,这通常是一个坏主意)
  • 使用主题分支
  • rebase --onto解决方案
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

教程的版本控制设置 的相关文章

  • 在 git 中管理 schema.rb 的首选方法是什么?

    我不想添加schema rb to gitignore 因为我希望能够从该文件加载新的数据库架构 然而 保持检查状态会导致各种虚假冲突 而这些冲突很容易通过新的解决方案解决 db migrate reset 基本上我想要一种方法 将 sch
  • Git 与人工制品

    刚刚完成 NPM 和 Bower 的 Artifactory 设置 它非常容易使用 您只需更改存储库 URL 一切就正常了 查看有关如何让 Artifactory 与 github vcs 一起使用的文档 它看起来过于复杂 我想知道是否有人
  • 如何在运行“更新”之前查看存储库中的文件

    I run hg pull这向我的存储库添加了新的更改 在使用新更改更新我的工作目录之前 我想查看这些新文件 更改 我相信我使用的 SVNsvn st u但在 Mercurial 中是如何完成的呢 在拉动之前 您可以使用 hg incomi
  • 撤消 git pull,如何将存储库恢复到旧状态

    有什么方法可以恢复或撤消 git pull 以便我的源 存储库将恢复到执行 git pull 之前的旧状态 我想这样做是因为它合并了一些我不想这样做的文件 但只合并了其他剩余的文件 那么 我想找回这些文件 可以吗 编辑 我想撤消 git m
  • TFS 2010 API - 从合并中获取工作项

    我需要在 TFS 2010 中的构建完成时发送一封电子邮件 其中详细说明与已作为此构建的一部分进行编译的签入相关的工作项 通过使用这没有问题associatedChangesets构建工作流程中可用的变量 但是 在生产情况下 我们会将开发分
  • Mac OSX 上有哪些与 TortoiseSVN 等效的软件? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 化石入门

    我刚刚开始接触化石 我选择化石的理由是 跨平台 单个可执行文件 单个存储库文件 典型扩展名 fossil 据说很容易使用 但它们不是全部吗 我有几个问题 上下文 假设我想跟踪几个目录中每个文件的更改 适当地命名为 dir1 dir2 等 假
  • Git推送大文件时远端意外挂断

    当我尝试推送到我的 bitbucket 存储库时 出现以下错误 事实上 在 GitHub 中也是如此 数物体 48 完成 增量压缩最多使用 2 个线程 压缩对象 100 38 38 完成 写入对象 100 48 48 1 95 MiB 38
  • 在浏览器中刷新页面而不重新提交表单

    我是一名 ASP NET 开发人员 我通常会发现自己正在浏览器中打开正在处理的网页 Chrome 是我选择的浏览器 但这个问题与任何浏览器都相关 我的工作流程通常是这样的 编写代码 在 Visual Studio 中重建项目 然后使用 Al
  • 版本控制中的平分是否受益于使用 rebaseif 工作流程?

    rebaseif Mercurial 扩展会在拉取时自动执行变基过程 前提是合并可以自动完成而不会发生冲突 如果存在需要手动解决的冲突 它不会变基 让您准备好手动合并两个分支 当开发人员在代码的不同部分工作时 这会简化和线性化历史记录 尽管
  • Lotus Notes/Domino 开发版本控制的最佳实践

    请分享您如何对 Lotus Notes Domino 开发进行版本控制 我想将所有脚本 视图 自定义表单 脚本库等放入我们的 SVN 存储库中 半自动方法也被接受 即 如果我找到一种方法来获取一个文件中表单的所有事件脚本 并能够将其作为整个
  • git merge --squash 和 gitcherry-pick 有什么区别?

    如果我在标准的主功能工作流程中工作 那么将功能分支压缩到主功能分支和将其挑选到主功能分支之间有什么区别 分支示例 m1 m2 master f1 f2 feature 我认为两者都有相同的输出 即 m1 m2 m3 master f1 f2
  • git rebase 吃了我的提交!为我翻译“git reflog”输出?

    我已经完成了五次提交 我想在推送它们之前将它们全部合并为一次提交 出于某种原因 我决定尝试通过与通常使用的不同的方式来做到这一点 FWIW 我试图按照此处的说明进行操作http gitready com advanced 2009 02 1
  • 使用 git 将一系列小的合并从 master 压缩到我的分支中,同时保留对 master 的引用?

    我有一个非常复杂的合并要做 部分问题在于我浪费了太多时间 因此要纳入我的分支的更改量是巨大的 为了让事情变得更容易 我选择这样做git merge origin master 20 then git merge origin master
  • 在 SourceForge 上强制进行 Git 推送

    我正在尝试回滚 SourceForge 上的 Git 存储库 我尝试了以下方法 git reset hard 9ac2e31ca4a155d4c36780b4329626045a7f40ed HEAD ist jetzt bei 9ac2e
  • 用于生成 4GB ISO 的构建系统的版本控制解决方案

    我有一个软件项目 在其构建的最后阶段 在创建所有 jar 文件和相关脚本 配置文件之后 我需要将其植入 CentOS ISO 中 该 ISO 具有一个 kickstart 配置文件 该文件运行一些安装后脚本并安装一些定制的 RPM 该项目位
  • 在 GitHub 上看不到“在 Xcode 中打开”按钮

    正如在GitHub 和 Xcode 9 中的新源代码管理工作流程 https developer apple com videos play wwdc2017 405 time 204Apple 视频会话 我们可以直接从 Xcode 克隆项
  • 如何查看 SVN 工作副本中每个文件的修订号?

    我与另一位开发人员在同一个工作副本中工作 我知道这是一个坏主意 我们通常会更新单个文件 现在我们有一些版本中的文件和另一个版本中的其他文件 如何查看包含各自修订号的文件列表 工作副本位于 Linux 机器中 我们使用 svn 命令行 预先感
  • ReSharper 和 Rational Team Concert (RTC) - 它们配合得很好吗?

    我最近加入了一个小型开发团队 该团队正在考虑新的版本控制系统 由于它是大型组织的一部分 因此我们很可能采用 Rational Team Concert 的公司标准 我建议他们应该选择更简单的东西 但我可能不会如愿 我主要担心它无法与 ReS
  • 使用可通过 FTP 访问的 Web 服务器进行 Git 托管?

    我运行一个 糟糕的 网站 托管在第三方网络服务器上 我可以通过 FTP 访问我的 Web 服务器 据推测 Git 本身具有通过 FTP 推送 拉取的能力 由于我的 Web 服务器已经可以随处访问 我希望将其用作集中式 Git 存储库 我可以

随机推荐

  • IMFSinkWriter无法导出mp4的大尺寸视频

    我的 Windows MFC 应用程序具有导出视频文件的功能 并且它可以选择编码格式 通过WMV or MP4 和框架尺寸 但是 不幸的是当我尝试导出时MP4每次都设置大帧大小的文件MF E INVALIDMEDIATYPE发生了 简而言之
  • 正则表达式:按逗号分割,但排除括号和引号内的逗号(单引号和双引号)

    我有一根绳子 5 5 5 C A B A B B A A B C A B 我想用逗号分割它 但需要排除括号和引号内的逗号 单引号和双引号 像这样 5 5 5 C A B A B B A A B C A B 使用java正则表达式如何实现这一
  • AWS:将 Cognito 授权用户限制为特定 Lambda 函数

    我正在使用 AWS 并且有以下设置 UserPool API网关 Lambda函数 API 网关使用 UserPool 授权者来保护 lambda 函数 到目前为止 这是有效的 现在我想将每个 lambda 函数限制为特定的用户组 因此 我
  • Apple 的静默推送通知可以在后台启动我的应用程序吗?

    根据苹果的文档 我可以通过添加来注册静默通知 content available 1键值对aps有效负载字典 我希望我的应用程序在无声通知到达时在后台唤醒 我设置App downloads content in response to pu
  • 在 Azure ML 上安装附加 R 包

    我正在执行以下步骤将 R Hash 2 2 6 zip 包安装到 Azure ML 将 zip 文件作为数据集上传 创建一个新实验并添加 执行 R 脚本 进行实验 拖放 zip 文件数据集进行实验 将步骤3中的数据集连接到步骤2的 执行R脚
  • 泽西岛和 HK2 服务定位器

    我正在尝试在 Application 构造函数 从 ResourceConfig 继承的东西 中初始化 Jersey 应用程序中的一些组件 看起来像这样 public Application Context ServletContext c
  • 如何将数据从 Webform 页面发布到 HTTPHandler.ashx 文件?

    我有一个 Web 应用程序项目来支持到供应商产品后端的文件传输操作 它由 2 个 HTTPHandler 文件组成 在带有 IIS 6 0 的 Win2003 服务器上编译成网站 上传处理程序 ashx 下载处理程序 ashx 这些文件从公
  • pyCuda,发送多个单变量参数的问题

    我这里有一个 pycuda 程序 它从命令行读取图像并保存反转颜色的版本 import pycuda autoinit import pycuda driver as device from pycuda compiler import S
  • mem_fun和bind1st问题

    我有以下课程 class A public ctr and etc A clone B container 现在 我有一个vector
  • Firestore,如何构建“likedBy”查询

    我在思考如何最好地构建我的 非常简单的 Firestore 应用程序时遇到了一些困难 我有一组这样的用户 users A123 name Adam B234 name Bella C345 name Charlie 每个用户都可以 喜欢 或
  • 使两个角圆化和两个直切而不是颤振中的曲线

    我怎样才能在颤振中制作下面的瓷砖状设计 两侧有一点弯曲 两侧的其余部分是直线切割的柔和曲线 我可以制作两个圆角和两个非圆角 但无法制作如下所示的一个 任何人都知道如何制作这样的瓷砖 我已经使用了 RoundRect ClipRRect 和
  • 如何在 C# 中向 UserControl 添加事件?

    我有一个包含 3 个标签的 UserControl 我想为其添加一个事件 该事件在标签之一的文本更改时发生 我正在使用 Visual Studio 2010 首先 您需要在类中声明事件 以及您的方法和构造函数 public event Ev
  • 创建 8 位图像

    我正在尝试创建具有纯背景色的 8 位图像 看起来应该非常简单 但文件上的详细信息将其列为 32 位颜色深度 我缺少什么 public void CreateImage var bmpOut new Bitmap 300 300 var g
  • SyntaxError:创建 virtualenv 时语法无效

    我想为 python 2 7 创建一个 virtualenv 我使用的是 3 7 我以管理员身份运行 cmd 在 Windows 10 上 C WINDOWS system32 gt virtualenv p C Python27 pyth
  • 从 Kafka 进行流聚合时运行“死锁”

    几天前我发布了另一个类似的问题 如何在启动Spark Streaming进程时加载历史数据 并计算运行聚合 我现在至少设法得到了一个 有效 的解决方案 这意味着该过程本身似乎可以正常工作 但是 由于我是 Spark 的初学者 我似乎错过了一
  • 为什么可以从 double 到 float 隐式转换?

    在 C 中我们可以写类似的东西 float f 3 55 这是一个合法的语句 而实数的类型是 double 我们将该 double 存储为浮点数 它本质上意味着将 8 个字节存储为 4 个字节 可能会丢失数据 我的问题是当我写的时候 lon
  • 重写历史记录以撤消对 git 中当前分支上的文件的所有更改

    假设我有一个修改六个文件的功能分支 该分支上的大部分提交都涉及file py 我最终意识到有一种可能更好的方法来实现此功能而无需触摸file py根本不 有没有办法调整我的分支上的所有提交以不触及该文件 我觉得应该有某种交互式变基技巧可以轻
  • shell_exec() 和 exec() 在 PHP 中不起作用

    像许多其他人一样 我对 PHP 中的 shell exec 函数有疑问 我已禁用安全模式并从 php ini 中删除了disabled functions 如果我从终端 php print php 运行 php 脚本 它工作正常 但如果我从
  • 在 MATLAB 中使用 i 和 j 作为变量

    i and j是非常流行的变量名称 例如 参见这个问题 and this one 例如 在循环中 for i 1 10 Do something end 作为矩阵的索引 mat i j 4 Why 不应该它们可以用作 MATLAB 中的变量
  • 教程的版本控制设置

    我正在尝试为与编程相关的教程设置版本控制 事实证明这是有问题的 因为有两种不同的历史 本教程提供了项目构建的历史记录 每个章节都提供了该项目的历史记录 读者将看到这些历史记录 如果我从未打算再次更改教程中已编写的章节 我可以将每个章节作为标