Skip to content

Latest commit

 

History

History
executable file
·
90 lines (73 loc) · 3.97 KB

File metadata and controls

executable file
·
90 lines (73 loc) · 3.97 KB

Git, GitHub与项目管理层面的敏捷开发 [草稿]

基本使用VSC的傻瓜式git操作演示

用到的工具

  • VSC
  • jupyter插件, bash内核
  • gitlens插件
  • git graph插件
  • github desktop
  • 带git插件的zsh
  • neovim
  • chrome: github, zenhub

推荐资料:

我的准备工作

  • 在msc仓库的vsc fork创建好zenhub workspace
  • 创建一些issue

演示内容

  1. 配置: email, name, credential (local/system/global)

  2. 用github desktop把这个仓库拉下来 (介绍github desktop, 优点在于同时看到多个仓库状态)

  3. 拉个大仓库下来实验

    1. 从msc仓库fork一个vsc到自己帐号

    2. 浅克隆 (476.36MB -> 14.88MB) 实验仓库单分支到这底下为test-repo (用alias/navi代替记忆) (代理, https, 不要ssh) (如何获得其他分支)

      git clone --depth 50 --single-branch https://github.com/LeoJhonSong/vscode.git test-repo
      
    3. 打开vsc前打开dolphin删掉vsc仓库所有文件并撤回更改, ctrl h指出.git的存在. 稍微解释下.git/config比如设置多远程端

  4. 浏览代码

    1. repo里可以包含repo (vsc有根目录为repo时的bug, submodule解决)
    2. checkout: 切换分支/commit
    3. git图形/终端界面中常用的标志: M, D, U, R, * (稍后还会有一些)
    4. blame
    5. file hist (重命名导致历史丢失问题git mv = mv;git rm; git add)
    6. git graph
  5. 编辑代码

    用脚本编辑一下根目录第一个文件加点hello world注释, 操作到演示需要的阶段

    1. 基本操作
      1. git advise
      2. add, commit (amend), push (force, vsc可以设置post commit action) (为什么add, commit, push是分离的之后讨论)
      3. 展示一下只有文件meta信息变化的更改
      4. .gitignoreinclude/exclude, 各文件夹下分别放 (pic下include.pic)
      5. checkout, reset (soft/hard), revert
      6. stash (/包含未跟踪) (有多个stash想测试时不如创建新分支)
      7. 用stash来clean
    2. 良好的commit message (用插件提交, 与github的联动, 如close #1)
    3. rebase重写历史来合并/清除/修改丢人commit (用可视化界面, 同时展示一下vim版)
    4. tag (用来标记一个大版本, 如作业的一个lab结束)
  6. github仓库介绍

    1. web vscode
    2. 快速介绍github issues (settings页面有简介), zenhub面板
    3. 如何防止队友把仓库炸了: 分支保护, 权限设置
    4. 队友已经把仓库炸了怎么办: force push/reset/revert (分布式的好处)
  7. git flow开发工作流

    1. 参考: cyberbotics/webots
    2. merge, 解决合并冲突 (配合vsc设置)
    3. 忘记要开新分支直接在master分支进行开发了, 但不应该在master分支/master分支不允许push: 创建新分支
    4. cherry-pick, rebase (实际是自动化cherry-pick) 参考
    5. 在自己的分支可以force push, 有别人在就不能
    6. merge(/fast forward)后delete (如果有传到过远程端那运行下git fetch --prune)
  8. pull request管理

    1. 解决远程端冲突
    2. amend, force push减少提交数
    3. review
    4. suggestion with code
    5. ci bot (还是以webots为例?) 快速介绍github action
  9. 借助zenhub介绍敏捷开发 6. 优秀的项目文档 Readme Driven Development 7. 快速介绍github自带项目管理系统 (有vscode为例子) 8. milestone/sprint 9. epic

    • issue
      • checklist in a issue -> 代码中的TODO/FIXME