git版本控制工具
一、什么是git
git
官方名称: 分布式版本管理器
通俗解释:就是一个管理我们文件夹的工具,只不过可以保留所有版本信息
- 就是我们安装的一个软件
- 然后这个软件来管理我们的文件夹
- 这个文件夹被git管理后,我们可以对他进行各种操作
- 保证我们写过的内容不会丢失
二、git安装
官网:https://git-scm.com/
打开官网,直接下载
选择自己电脑的操作系统和位数
-
下载好后,直接安装
-
一直下一步就可以了
-
检测是否安装成功,在命令行窗口输入
# 检测是否安装成功 $ git --version
三、git命令操作
- git是一个软件没错,但是不会生成桌面图标
- 而是需要在 命令行 进行操作的软件
- 我们单击鼠标右键,点击
git bash here
,会出现以下内容
- 点开就是一个命令行窗口
- 可以写一些指令,只不过色彩更鲜艳
- 使用 cmd 或者 powershell 窗口来运行 git 指令也可以
- 只要是在终端运行就行
- OS操作系统直接在 终端 中运行就行
git bash here
表示在当前目录下运行git bash
- 所以你在哪个文件夹下点击的,那么出来的命令行窗口的目录就是哪里
四、本地库使用
1.git分区
git init
在当前目录创建版本库,该目录被git管理
-
当一个文件被
git
管理了以后 -
git
就会对当前文件夹进行 分区 -
会分为三个区域
- 工作区: 我们书写的源码就在工作区里面
- 暂存区: 把我们想要存储的内容放在暂存区
- 历史区: 把暂存区里面的内容拿出来,形成一个历史版本
向版本库添加文件
- 要先放在暂存区
- 然后才能在暂存区里面放到历史区
- 才能生成一个版本保存下来
2.初始用户名和邮箱,告诉git是谁提交的版本
$ git config --global user.name "Your Name"
$ git config --global user.email "YourEmail@xxx.com"
3.添加内容在暂存区
git add
指令
-
把单独一个文件放在暂存区
# 把文件夹下的index.txt 文本放在暂存区 $ git add index.txt
-
把单独一个文件夹放在暂存区(不能存放空文件夹)
# 把文件夹下的src文件夹放在暂存区 $ git add src/
-
把所有文件放在暂存区
# 把文件夹下的所有内容放在暂存区 $ git add --all #简写 $ git add .
4.暂存区的内容再回拉到工作区
-
把已经放在暂存区的内容在拉回到工作区
# 拉回暂存区的 index.txt 文件 $ git reset HEAD -- index.txt # 拉回暂存区的 ceshi 文件夹 $ git reset HEAD -- ceshi/ # 拉回暂存区的 所有文件 $ git reset HEAD -- . //注意: -- 两边都有空格, 拉回所有文件的时候,有一个 .
5.添加到历史区
- 暂存区,只是帮我们暂时存放内容,我们删除了还是会丢的
- 要想帮我们保存下来,那么还是需要把暂存区的内容放到历史区
-
git
的历史区,就是把我们暂存区里面的文件形成一个历史版本 -
当一些文件形成一个版本的时候,就会一直记录下来
-
向历史区里面添加内容的时候,必须保证 暂存区 有内容
-
因为 历史区 就是把 暂存区 里面的内容收录进去
-
向历史区添加内容使用
git commit -m "说明"
# 把暂存区的内容放到历史区 $ git commit -m "我是第一个版本"
- 我们一定要写一个简单的说明
- 因为当我们的历史版本多了以后,我们也不记得那个版本做了哪些修改
- 所以有个简单的说明会好很多
6.查看日志
-
这时历史区就有了我们的第一个版本
-
我们使用
git log
这个指令查看版本信息# 查看当前历史区版本信息 $ git log
-
commit
版本号 -
Author
作者 -
Date
本次版本的记录时间 -
后面的内容就是提交的时候写的说明
-
git reflog
回退查看原来版本号
7.版本回退
-
我们提交了两次,历史区也有两条信息,也就是两个版本
-
放在历史区的内容,理论上就丢不了了
-
现在我们可以把工作区中的内容删除掉,删除后我们进行历史回退
-
使用
git reset --hard 版本编号
# 回退到第一次提交的版本 $ git reset --hard ce0c17f7a703c6847552c7aaab6becea6f0197f2 # 回退到第二次提交的版本 $ git reset --hard abb2c4f12566440e84bc166c3285f855a37a3bb2
-
方法二:
git reset --hard HEAD ^
( ^ 表示回到上一个版本,如果需要回退到上上个版本的话,将HEAD改成HEAD^, 以此类推。那如果要回退到前100个版本,这种方法肯定不方便,我们可以使用简便命令操作:git reset –hard HEAD~100
);
五、GIT远程库
1.注册账号
github:
官网: https://github.com/
gitee:
官网: https://gitee.com/
2.远程库操作
-
开 辟 远 程 库 \color{red}{开辟远程库} 开辟远程库
- 有了
github
账号后 - 我们就登录
github
网站,开辟一个远程仓库 github
的远程库也是以一个仓库一个仓库的形式来保存代码- 我们可以在 github上保存很多的项目
- 只要一个项目一个仓库就可以了
- 先点击新建仓库
- 有了
- 填写仓库信息
- 创建成功
g i t e e 和 g i t h u b 操 作 差 不 多 \color{red}{gitee和github操作差不多} gitee和github操作差不多
3.添加仓库地址
-
接下来,就要使用 git 上传代码了
-
我们先要告诉 git 上传到哪里
-
也就是给 git 添加一个上传的地址
-
使用
git remote add origin 仓库地址
来上传# 在项目文件夹下打开 gitbase # 添加仓库地址 $ git remote add origin https://gitee.com/****/H5.git // remote 远程的意思 //add 添加的意思 //origin 是一个变量名
4.上传
-
上传到哪里的地址我们已经添加好了
-
接下来就是上传内容了
- 上传要保证 历史区 里面有内容
- 上传的过程会把 历史区 里面所有的内容上传到云端
-
我们使用
git push
指令来上传# 上传内容 $ git push -u origin master # 表示把内容上传到origin这个地址 # master 是上传到远程的 master 分支
- -u 是我们第一次上传的时候使用到的,是为了记录一下你的用户名密码
- 下次上传就不需要再写了
-
第二次上传
# 第二次上传 $ git push
- 第二次上传的时候,因为有刚才的记录,就不需要在写
origin
和master
- 会默认上传到
origin
这个地址的master
分支上 - 到这里,就完成了一次
git
推送 - 这个时候本地的文件夹就真的可以删除了
- 因为远程仓库有一份我们的内容,本地的就可以删除了,可以直接把远程的拉回来就行
- 第二次上传的时候,因为有刚才的记录,就不需要在写
5.克隆
git
克隆就是指把远程仓库里面的内容克隆一份到本地- 可以克隆别人 公开 的仓库,也可以克隆自己的仓库
- 克隆别人的仓库,我们只能拿下来,修改后不能重新上传
- 克隆自己的仓库,我们修改后还可以再次上传
克隆
-
复制好地址后,选择一个我们要存放内容的文件夹(这里以桌面为例)
-
直接在想存放内容的位置打开
git bash
-
输入克隆指令
git clone 仓库地址
# 直接克隆仓库 $ git clone https://gitee.com/*****/H5.git
-
克隆指定版本
git clone http://github.com/symfony/symfony.git -b v2.0.9
-
克隆远程分支
git clone -b 远程分支名 http://github.com/symfony/symfony.git
-
6.下拉
-
不管你克隆下来的仓库还是别的方式弄来的本地仓库
-
当别人的代码更新以后,你想获得最新的代码
-
我们不需要重新克隆
-
只需要拉去一次代码就可以了
-
下拉指令
git pull
# 拉取远程最新代码 $ git pull
7.GIT冲突
-
git
冲突是指在我们的上传过程中 -
本地的版本和远程的版本不一致导致的
-
这个时候只要先使用
git pull
拉取回来- 让本地和远程保持一致
-
然后再重新上传就好了
-
但是
git pull
相对不安全,因为会自动和本地内容合并 -
我们也可以使用
git fetch
# 使用fetch 获取远程最新信息并开辟一个一个临时分支 $ git fetch origin master:tmp # 将当前分支和临时分支的内容进行对比 $ git diff tmp # 再选择合并分支内容 $ git merge tmp
六、GIT本地分支
1.git分支介绍
-
git
分支,就是我们自己把我们的整个文件夹分成一个一个独立的区域- 比如我们开发 登录 功能,可以放在
login
分支下进行开发 - 开发 列表 功能的时候,可以放在
list
分支下进行开发 - 大家互不干扰,每一个功能都是一个独立的功能分支
- 比如我们开发 登录 功能,可以放在
-
这样开发就会好很多
-
git
在初始化的时候,会自动生成一个分支,叫做master
-
表示主分支的意思,我们可以开辟很多独立分支
2.查看开辟分支
-
开辟一个分支使用
git branch 分支名称
指令# 开辟一个login分支 $ git branch login
-
查看当前分支情况
# 查看当前分支情况 $ git branch
-
会看到,当前有两个分支了
-
一个是
master
,一个是login
-
前面有一个
*
,表示你当前所处分支 -
我们对 登录 功能的开发要移动到
login
分支去完成
3.切换所处分支
-
我们切换所处分支使用
git checkout 分支名称
# 切换到 login 分支 $ git checkout login
-
然后我们在整个分支上进行 登录 功能的开发
-
开发完毕后,我们就在当前分支上进行提交
4.git合并分支
-
git
合并分支,只能是把别的分支的内容合并到自己的分支上 -
使用的是
git merge
# 切换到master分支 $ git checkout # 把 login 的内容合并到自己的分支 $ git merge login
-
这个时候,我们刚才在
login
上开发的东西就都到master
主分支上
5.删除分支
-
先切换到别的分支
-
使用指令
git branch -d 分支名称
来删除# 先切换到别的分支 $ git checkout master # 删除login分支 $ git branch -d login
6.GIT远程分支
- 查看远程分支
git branch -r
- 创建远程分支(本地分支push到远程 )
git push origin [name]
- 删除远程分支
git push origin :heads/[name]
-
拉取远程仓库
git pull [remoteName] [localBranchName]
-
克隆远程分支
$ fit pill -b[远程分支名] [地址] $ git clone -b product-dev http://github.com/symfony/symfony.git