SVN?

Or Git?

What's the difference?

SCM

  • Software Configuration Management
  • Source Code Management (VCS)

SCM

  • Version Control版本控制
  • Access Control(权限控制)
  • Snapshot(快照)
  • Branch分支
  • Change Management变更管理
  • Sandbox

SCM

   Lock VS Merge

Centralized(集中式) VS Distributed(分布式)

 

SVN

集中式

Lock & Merge

按文件存储
 

分支使用成本高

离线状态无法使用

GIT

分布式

Merge

元数据存储(标签,分支,版本记录等)

分支简单易用

离线仍可提交

15

使用 GIT 带来的收益

20

GIT 基本使用

Exercise

  • 下载安装      - https://git-scm.com
  • 初始化Repo - git init
  • 配置管理      - git config
  • 帮助             - git help

Git Work Flow

30

Exercise

  • git status
  • git diff (--cached)
  • git add
  • git commit (-a/-m)
  • git log
  • git reset (--soft/--mixed/--hard)
  • git checkout (--)
  1. 查看当前目录状态
  2. 新建一个文件README
  3. 添加这个文件至staging
  4. 提交这个文件
  5. 再次修改README的内容
  6. 查看这次修改的内容
  7. 直接将这次修改提交 No git add

40

Exercise

  • git status
  • git diff (--cached)
  • git add
  • git commit (-a/-m)
  • git log
  • git reset (--soft/--mixed/--hard)
  • git checkout (--)

  8. 查看当前的所有commits
  9. 将最近的一个修改还原至staging
 10.Diff staging的文件修改
 11.将staging改动还原至untracked
 12.撤销掉这次改动的全部内容,使得working directory clean

50

Git Work Flow

60

Git Work Flow

Git Work Flow

Exercise

  1. 将刚才建立的git repo设为本地的upstream remote
  2. 将本地修改Push上去

70

Branch

Exercise

  1. 创建一个分支“test”
  2. 从master切换到test上并做一次commit
  3. 比较master和test上的log
  4. 切换回master并merge刚才的分支

80

Conflict

85

Merge VS Rebase

Exercise

  1. 创建分支并做一次commit
  2. 切换回master,对同一个文件进行修改并提交
  3. 尝试用merge将分支上的修改合并回master
  4. 重复1~2步,这次尝试用rebase合并
  5. 比较两次的结果

95

Github & Gitlab

Report

过程自动化

Process Automation

Pull Request

  • code review
  • communication

Pull Request

105

与IDE的集成

常见使用场景

110

日常提交代码

本地代码需要更新时

工作到一半要去修线上Bug

Revert

实用小技巧

Summary

Thanks

Any questions?

Git Training

By melonq

Git Training

  • 430