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 (--)
- 查看当前目录状态
- 新建一个文件README
- 添加这个文件至staging
- 提交这个文件
- 再次修改README的内容
- 查看这次修改的内容
- 直接将这次修改提交 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
- 将刚才建立的git repo设为本地的upstream remote
- 将本地修改Push上去

70
Branch

Exercise
- 创建一个分支“test”
- 从master切换到test上并做一次commit
- 比较master和test上的log
- 切换回master并merge刚才的分支
80
Conflict

85
Merge VS Rebase

Exercise
- 创建分支并做一次commit
- 切换回master,对同一个文件进行修改并提交
- 尝试用merge将分支上的修改合并回master
- 重复1~2步,这次尝试用rebase合并
- 比较两次的结果
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