Git学习
git简介
版本控制工具需要提供的功能
- 协同修改
- 数据备份
- 版本管理
- 权限控制
- 历史纪录
- 分支管理
版本控制工具类型
集中式【CVS、SVN、VSS】
存在单点故障问题,本地机器只保存当前状态,如果服务器宕机,则历史数据全部丢失
分布式【Git、Mercurial...】
不存在单点故障问题
Git优势
- 不需要联网,大部分操作在本地完成
- 完整性保证,不存在单点故障
- 尽可能添加数据而不是删除或修改数据
- 分支操作非常快捷流畅
- 与linux命令全面兼容
Git维护本地仓库命令
初始化git仓库,可以加上仓库名xx【自动创建新的文件夹xx】,不加仓库名,则默认为当前目录 git init 设置全局参数,用于后面代码提交时,显示的数据字段,项目可以单独配置,优先级高于全局配置 git config --global user.name git config --global user.email 查看当前仓库的三个工作区【工作区域,暂存区,本地仓库】的状态 git status 添加指定文件到暂存区 git add 把指定文件从暂存区移除【对于新增文件,可以随意使用,但是历史追踪文件慎用此命令】 git rm --cached 把暂存区文件提交到本地仓库 git commit -m 'commit message' 从本地仓库拿出文件的某一个版本,后面可以加上版本号,不加默认为HEAD版本,即忽略本地修改 git checkout -- <file> 代码回滚,默认mixed,HEAD则表示<file>回滚到最新提交的版本,忽略本地修改,同上一条命令 git reset HEAD <file> 查看git的版本变更信息,不包括本地的版本变更信息 git log 显示的效果更美观 git log --pretty=oneline 效果同上一条 git log --oneline 查看git的版本变更信息,包括本地的所有历史版本回滚记录 git reflog HEAD指针 移动指针3种方式 1.索引值 git reset --hard 索引值 2.^ 只能后退,n个^,后退n步 git reset --hard HEAD^ 3.~ git reset --hard HEAD~n 只能后退,n表示后退的步数 移动指针的三种参数区别 1.soft 只移动本地仓库,工作区域和暂存区不变更,【最常用】 2.mixed 移动本地仓库和暂存区 3.hard【最常用】 移动本地库和暂存区,工作区 工作区文件和暂存区文件比较 git diff <文件名> 工作区文件和历史版本文件比较 git diff <索引值> <文件名> 创建分支 git branch <分支名> 创建新分支并切换到该分支 git checkout -b <分支名> 查看所有分支 git branch -v 切换分支 git checkout <分支名> 将指定分支合并到当前所在分支 git merge <分支名>