Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,此文主要介绍git的使用,了解git的三个区,通过git连接github,以及常用git的常用命令.
git的使用
1.版本控制
1.1 备份文件
- 类似于网盘备份
 - 我们的代码也需要备份。修改完了以后提交给版本库进行保管,哪一天代码没了也可以找回来。
 
1.2 记录历史
- 比如我们打游戏就要
存档,万一挂了还可以从上个存档的地方重玩。 - 和网盘不同,网盘保留的是最新的状态,
历史的记录都没有了,修改的记录也都找不回来了 - 网盘无法知道文件里的某行
代码是何人在哪个时间添加进去的 
1.3 回到过去
- 如果我有一天不小心删除了某个文件,我们可以通过历史备份找回来
 
1.4 多端共享
- Git仓库可以通过PC端、Android、IOS
移动端等各个终端访问 - 可以
随时随地修改代码,公司没干完的工作回家接着干 
1.5 团队协作
- 多个人或团队
合作编写一个项目 - 合并代码处理
冲突 
2.什么是git
- 为了告别手动方式管理Linux代码,并且符合开源和免费,Linus花了
两周时间自己用 C 写了一个分布式版本控制系统,这就是Git - Git迅速成为最流行的分布式版本控制系统,尤其是 2008 年 GitHub 网站上线了,它为开源项目 免费提供Git存储 ,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。
 
3.git的安装
3.1 windows下安装
下载地址 http://git-scm.com


  
3.2 mac下安装
下载Homebrewhttp://brew.sh
   
- 拷贝对应脚本到终端下安装HomeBrew
 - 然后在终端执行 brew install git命令安装*git
 
安装xcode会默认下载git
4. 配置git用户和邮箱
  | 
  | 
不配置用户名和邮箱的话无法提交,因为git不知道你是谁
查看配置
  | 
  | 
5.初始化git
- 先创建一个空目录 ,然后进入此目录
 - 点击右键选择Git-Bash打开命令行
 - 输入git init命令把这个目录变成Git可以管理的仓库
 
  | 
  | 
通过ls -al命令查看所有文件
6.git中的三个区
工作区
通过git add 添加到暂存区
1$ git add '文件名'
暂存区
特点:过渡的作用,避免误操作,保护工作区和历史区,分支处理;通过git commit 添加到历史区
1$ git commit -m"注释内容"
历史区
查看历史状态
1$ git log
修改时通过git status查看当前状态
7.git diff
不同区的代码比较
7.1 工作区和暂存区
  | 
  | 
7.2 暂存区和历史区
  | 
  | 
7.3 工作区和版本库
  | 
  | 
8. 撤销
8.1 撤销回git add的内容
  | 
  | 
8.2 撤回文件
- 先从缓存区撤销,缓存区无内容,从历史区域撤销1$ git checkout "文件名"
 
有的时候我们希望提交时合并到上一次的提交 git commit –amend
9.删除
9.1 删除暂存区和工作区
删除暂存区中的内容,并且保证工作区中的内容已经不存在1$ git rm "文件名"
若本地文件存在则不能删除,需要通过-f参数删除
9.2 仅删除缓存区
  | 
  | 
10. 恢复
10.1 恢复某个版本文件
  | 
  | 
10.2 通过版本id恢复
  | 
  | 
10.3 恢复未来
查看当时回滚时的版本1$ git reflog
10.4 快速版本回退
  | 
  | 
11. 同步远程仓库
11.1 gitHub
- 注册账号
 - 新建项目
 
11.2 添加远程仓库
  | 
  | 
11.3 添加忽略文件
  | 
  | 
11.4 推送代码
  | 
  | 
11.5 查看
  | 
  | 
12.代码的合并
12.1 git fetch
  | 
  | 
拉取过来手动合并12$ git diff master origin/master$ git merge origin/master
12.2 git pull
拉取并合并1git pull
13. 作业提交流程
13.1 第一次交作业流程(组长)
fork珠峰培训讲师的作业仓库- 把自己的仓库
下载到本地 - 把自己的作业 
上传到自己的github仓库 - 发
pull request给讲师 - 添加组员账号
 
13.2 第二次交作业流程(组员)
- 克隆组长项目
 - 先
拉取组长仓库最新代码 - 将自己的作业(放入对应的文件夹)
 - git add/git commit
 - 再push前拉取组长仓库最新代码
 - push到组长仓库
 
13.3 第二次交作业流程(组长)
- 在本地
增加讲师仓库 拉取自己的最新代码拉取老师的最新的代码,如果冲突需要解决冲突- 把自己的作业 拷贝进去(如果组长没有要提交的东西可省略)
 - 把自己的作业上
传到自己的github仓库(如果组长没有要提交的东西可省略) - 发
pull request给讲师