我正计划如何使用演示应用程序构建Web应用程序并从头开始构建它。
我想使用git 1)演示应用程序代码的回购,和 2)有git commit log帮助指导学生。
每节课都是构建网络应用程序的一小步。我希望每个课程都对应一个git提交,通过查看课程在GitHub上的提交,学生可以确切地看到课程中更改了哪些代码。
我不确定如何执行此操作并使其可维护,因此提交历史始终按课程顺序进行。或者是否有一种常用的替代技术,我不知道(例如使用分支/标签/补丁)?我主要担心的是:
提前感谢指导,建议,反馈和改进!
答案 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 tagging和updating the commit that is associated to a tag。