版本控制系统
分支模型
Git
版本控制系统:
版本控制系统即(version control system)是一种记录若干文件的修订记录的系统,它帮助我们查阅或回到某个历史版本。
- “人肉” VCS
- LVCS 本地
- CVSC 集中式
- DVCS f分布式
git命令基础操作
git help <command>
git <command> -h
git <command> --help
man git -<command>
git config配置git仓库
用户配置:
git config --global user.name "username"
git config --global user.email email@email.com
配置级别
- --local 【默认,高优先级】:只影响本地仓库 (.git/config)
- --global 【中优先级】:影响到所有当前用户的git仓库 (~/.gitconfig)
- --system 【低优先级】: 影响到全系统的git仓库
初始化仓库:
git init [path]
git init [path] --bare
查看当前仓库信息
git status
三对关系
- 未跟踪 <==> 跟踪
- 工作目录 <==> 暂存区
- 暂存区 <==> 最新提交
git的状态
一个是记录状态(目录,暂存区,提交区),一个是文件状态(是否跟踪)。
记录状态
- 工作目录 ==> 目录中的所有文件
- 暂存区 ==> 如何文件有改变将放入暂存区准备转移到提交区
- 提交区 ==> 准备正式提交
文件状态
- 未跟踪 => 表示git 将忽略的文件
- 已跟踪 => 表示git正在监视的文件
他们相互之间可以转换
添加文件内容到暂存区(同时文件被跟踪)
单文件添加:
git add 文件名
批量添加:
当前目录下的所有文件
git add .
忽略文件
.gitignore
- 在添加时忽略匹配的文件
- 仅用作于未跟踪文件
相当于在 git add .前先进行一次过滤,让git先排除其中指定的文件。
范例:
# Logs
logs
*.log
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cow
# Editor config
*.subline.*
# Compiled binary addons(http://nodejs.org/api/addons.html)
build/Release
# Dependency directory
node_modules
暂存区删除文件
git rm --cached : 仅从暂存区删除
git rm : 从暂存区与工作目录删除
git rm $( git ls-files --deleted) : 删除所有被跟踪,但是在工作目录被删除的文件
根据暂存区内容创建一个提交记录
git commit
git commit -m '提示信息'
git commit -a -m 'full commit' 先把所有修改的文件放入暂存区后提交。
查看提交记录
git log
git log --oneline 简介的显示
alias命令
git config alias.shortname <fullcommand>
使用方法
git shortname
显示不同版本差异
git diff // 显示工作目录与暂存区的差异
git diff -cached [<reference>] // 暂存区与某次提交差异,默认为HEAD
git diff <reference> // 工作目录与某次提交的差异
撤销本地修改
将文件内容从暂存区复制到工作目录
也就是把文件回到之前提交到暂存区时的内容
git checkout -- <file>
撤销暂存区内容
将文件内容从上次提交复制到暂存区
也就是修改暂存区的文件为上次的提交区的文件。
git reset HEAD <file>
撤销全部改动
将内容从上次提交复制到工作目录
git checkout HEAD -- <file>
最后整理
分支操作
分支的增删查改
git branch <branchName> //创建一个分支
git branch -d <branchName> // 删除指定分支
git branch -v // 显示现在所有的分支信息