版本控制
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
Source: gitbook
版本控制的功能
版本追溯
按需保存
按时自动保存
graph BT
A[1:00]-->B[1:30]
B-->C[2:00]
C-->D[2:30]
按需保存
graph BT
M[初始版本]-->N[修正邮件格式错误的bug]
N-->O[增加微信认证功能]
O-->P[修改说明文档]
关联存储
graph LR
subgraph '
id1["index.html
v1"]-->id2["index.html
v2"]
id2-->id3["index.html
v3"]
id3-->id4["index.html
v4"]
end
subgraph '
id21["style.css
v1"]-->id22["style.css
v2"]
id22-->id23["style.css
v3"]
id23-->id24["style.css
v4"]
end
subgraph '
id31["main.js
v1"]-->id32["main.js
v2"]
id32-->id33["main.js
v3"]
id33-->id34["main.js
v4"]
end
共同编辑 集中管理
source: gitbook
分布存储 集中管理
source: gitbook
git的诞生
Linus Torvalds
git的设计目标
- 速度
- 对非线性开发模式的强力支持(允许成千上万个并行开发的分支
- 完全分布式
- 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
开发进度...
- 3 April 2005, development began
- 7 April 2005, git became self-hosting
- 18 April 2005, first merge of multiple branches
- 29 April 2005, performance goal reached
- 16 June 2005, git managed the kernel 2.6.12 release
安装git
git shell
处理提交——git-gui
查看commit历史——gitk
git shell的优势
- 使用git的所有功能
- UI有多种版本, 不方便交流
- 易于编写自动化脚本
- 使用效率更高
在Linux上安装git
以ubuntu为例, 安装git只需要执行一行命令
$ sudo apt-get install git
安装图形界面工具gitk和gui
$ sudo apt-get install gitk git-gui
在Mac上安装git
官方维护的安装包
https://git-scm.com/download/mac
用Homebrew包管理器安装git
The missing package manager for OS X http://brew.sh/
$ brew install git
配置git-gui
编辑Home(家)目录下的.gitconfig文件. 添加下述内容:
[alias]
gui = !sh -c '/usr/local/Cellar/git/2.9.2/libexec/git-core/git-gui'
在Windows上安装git
Git for Windows
安装: https://git-for-windows.github.io/
Shell简介
- 了解命令: ls, cd, mv, rm, echo, cat
- 了解 | 及 > 或 >>
- 知道什么是Home(家)目录
- 命令提示符及当前目录, pwd
git的配置——git config
- 全局配置
对当前用户的所有版本库生效. 用*git config --global*来设置和查看. 保存在${HOME}/.gitconfig文件中
- 局部配置
只对当前版本库有效, 保存在.git/config文件中
配置作者名和邮箱
每次保存一个版本, 都会记录提交版本的作者名和邮箱, 因此需要在使用git之前设置好.
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
其它配置
- 配置编辑器
比如习惯使用emac的同学, 可以这样配置:
$ git config --global core.editor emacs
配置git log --graph 输出的格式和颜色
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
配置冲突解决工具
安装cygwin下的git环境
查看配置
$ git config --list --global
user.name=John Doe
user.email=johndoe@example.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
获取帮助
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
比如
$ git log --help
$ git help log
$ man git-help