使用git提交作为教程/研讨会步骤?

时间:2015-02-14 13:52:25

标签: git github

我正计划如何使用演示应用程序构建Web应用程序并从头开始构建它。

我想使用git 1)演示应用程序代码的回购, 2)有git commit log帮助指导学生。

每节课都是构建网络应用程序的一小步。我希望每个课程都对应一个git提交,通过查看课程在GitHub上的提交,学生可以确切地看到课程中更改了哪些代码。

我不确定如何执行此操作并使其可维护,因此提交历史始终按课程顺序进行。或者是否有一种常用的替代技术,我不知道(例如使用分支/标签/补丁)?我主要担心的是:

  • 对课程/提交进行更正和更新,并确保在随后的提交中出现这些更改
  • 在任何提交中更新诸如第三方JavaScript库之类的依赖关系
  • 按顺序保持提交历史记录,以便每次提交等于一个课程,并按顺序显示。如果第一个提交/课程在最初提交后很晚才更新,那么它应该仍然是提交日志中的第一个提交。

提前感谢指导,建议,反馈和改进!

3 个答案:

答案 0 :(得分:2)

使用分支 - 每节课一个分支。因此,如果您之后需要更新课程内容,只需在课程分支中进行提交,如果需要,只需将它们合并到所有后续课程分支。

示例:

两个分支可以很容易compared来显示任何给定课程中的新内容。例如,git diff lesson02..lesson03显示第3课中的新内容。


重写git repo历史记录(重新定位,修改等)通常不行。请不要向学生展示。如果git提交日志包括而不是隐藏所有错误修复,升级更改等,它将有助于指导学生更好。

答案 1 :(得分:1)

交互模式下的

git rebase应处理大多数用例:

对课程/提交进行更正和更新
查看this post,其中介绍了如何从上一课中更改文件/提交。您需要使用git rebase -i进入rebase交互模式。选择要更改的提交后,可以使用git commit --amend对其进行修改,然后继续使用rebase。

更新相关性
Here is a post讨论了如何在rebase交互模式下添加新文件。如果需要向课程/提交添加新的依赖项,则可以使用此选项。它比仅修改已存在的文件要复杂一些。你可能已经猜到了,你最终在rebase中做了git add

在这两种情况下使用rebase时,您应该记住您正在重写课程的历史记录。因此,如果您git push -force课程分支到存储库,则可能会给学生造成一些混淆。

答案 2 :(得分:0)

如果删除了保持日志顺序的约束,以便可以将其作为教程脚本读取,则可以使用标记。我的印象是标签会使维护更简单,更自然。

问题How to create a coding tutorial with snapshots in Git描述了使用标记的方法和指向an AngularJS tutorial的方法。本教程提供了代码比较的链接:https://github.com/angular/angular-phonecat/compare/step-0...step-1

我打算使用这种方法,因此我需要更熟悉git taggingupdating the commit that is associated to a tag