基本使用VSC的傻瓜式git操作演示
- VSC
- jupyter插件, bash内核
- gitlens插件
- git graph插件
- github desktop
- 带git插件的zsh
- neovim
- chrome: github, zenhub
推荐资料:
- 在msc仓库的vsc fork创建好zenhub workspace
- 创建一些issue
-
配置: email, name, credential (local/system/global)
-
用github desktop把这个仓库拉下来 (介绍github desktop, 优点在于同时看到多个仓库状态)
-
拉个大仓库下来实验
-
从msc仓库fork一个vsc到自己帐号
-
浅克隆 (476.36MB -> 14.88MB) 实验仓库单分支到这底下为test-repo (用alias/navi代替记忆) (代理, https, 不要ssh) (如何获得其他分支)
git clone --depth 50 --single-branch https://github.com/LeoJhonSong/vscode.git test-repo -
打开vsc前打开dolphin删掉vsc仓库所有文件并撤回更改, ctrl h指出
.git的存在. 稍微解释下.git/config比如设置多远程端
-
-
浏览代码
- repo里可以包含repo (vsc有根目录为repo时的bug, submodule解决)
- checkout: 切换分支/commit
- git图形/终端界面中常用的标志: M, D, U, R, * (稍后还会有一些)
- blame
- file hist (重命名导致历史丢失问题
git mv = mv;git rm; git add) - git graph
-
编辑代码
用脚本编辑一下根目录第一个文件加点hello world注释, 操作到演示需要的阶段
- 基本操作
- git advise
- add, commit (amend), push (force, vsc可以设置post commit action) (为什么add, commit, push是分离的之后讨论)
- 展示一下只有文件meta信息变化的更改
.gitignoreinclude/exclude, 各文件夹下分别放 (pic下include.pic)- checkout, reset (soft/hard), revert
- stash (/包含未跟踪) (有多个stash想测试时不如创建新分支)
- 用stash来clean
- 良好的commit message (用插件提交, 与github的联动, 如close #1)
- rebase重写历史来合并/清除/修改丢人commit (用可视化界面, 同时展示一下vim版)
- tag (用来标记一个大版本, 如作业的一个lab结束)
- 基本操作
-
github仓库介绍
- web vscode
- 快速介绍github issues (settings页面有简介), zenhub面板
- 如何防止队友把仓库炸了: 分支保护, 权限设置
- 队友已经把仓库炸了怎么办: force push/reset/revert (分布式的好处)
-
git flow开发工作流
- 参考: cyberbotics/webots
- merge, 解决合并冲突 (配合vsc设置)
- 忘记要开新分支直接在master分支进行开发了, 但不应该在master分支/master分支不允许push: 创建新分支
- cherry-pick, rebase (实际是自动化cherry-pick) 参考
- 在自己的分支可以force push, 有别人在就不能
- merge(/fast forward)后delete (如果有传到过远程端那运行下
git fetch --prune)
-
pull request管理
- 解决远程端冲突
- amend, force push减少提交数
- review
- suggestion with code
- ci bot (还是以webots为例?) 快速介绍github action
-
借助zenhub介绍敏捷开发 6. 优秀的项目文档 Readme Driven Development 7. 快速介绍github自带项目管理系统 (有vscode为例子) 8. milestone/sprint 9. epic
- issue
- checklist in a issue -> 代码中的TODO/FIXME
- issue