【Git】Git基础操作一文详解,入门易懂(附图和案例)
1- Git简介
- Git是目前世界上最先进的分布式版本控制系统(没有之一)。
- 作者:linus,linus系统的创始人
- 解决问题:代码的版本管理 和 团队分工协作
1.1 SVN的差异比较
- 传统饿版本控制系统(如SVN)是基于差异的版本控制。它们存储的是一组基本文件和每个文件随时间逐步累积的差异
- 好处:节省磁盘空间
- 缺点:耗时,效率低,在每次切换版本的时候,都需要在基本文件的基础上,应用每个差异,从而生成目标版本对应的文件。
1.2 Git 的特性
- 直接记录快照,而非差异比较
- 近乎所有操作都是本地执行
1.3 Git三个区域
- 工作区 (处理工作的区域)
- 暂存区 (已完成的工作的临时存放区域,等待被提交)
- Git仓库(最终的存放区域)
1.4 Git的三种状态
- 已修改 modified
表示修改了文件,但还没将修改的结果放到暂存区
- 已暂存 staged
表示对已修改文件的的当前版本做了标记,使之包含在 下次提交的列表中
- 已提交 committed
表示文件已经安全地保存在本地的Git仓库中
1.5 Git 工作流程
2- 安装并配置
大家可以去Git的官网去下载
2.1 配置用户信息
安装完Git之后,要做的第一件事技术设置自己的用户名和邮件地址,因为通过Git对项目进行版本管理的时候,Git需要使用这些基本信息,来记录是谁对项目进行了操作
git config --global user.name "你的名字或昵称"
git config --global user.email "你的邮箱"
注意 :如果使用了 --global 选项,那么该命令只需要运行一次,即可永久生效。
扫描二维码关注公众号,回复: 14574981 查看本文章
3- Git 基础操作
3.1 获取Git仓库方法
以下两种方式都能够在自己的电脑上得到一个可用的Git仓库
- 将尚未进行版本控制的本地目录转换位Git仓库
- 从其它服务器克隆一个已存在的Git仓库
3.2 在现有目录种初始化仓库
如果自己有一个尚未进行版本控制的项目目录,想要用Git来控制它
- 执行 git init 命令将当前的目录转化为Git仓库
- 注:git init 命令会创建一个名为 .git的隐藏目录,这个 .git目录就是当前项目的Git仓库,里面包含了 初始的必要文件,这些文件是Git仓库的必要组成部分
3.3 Git操作的终极结果
让工作区中的文件都处于“未修改”的状态
3.4 检查文件的状态
可以使用 git status
查看文件处于什么状态,例如:我这个处于zql分支上,没有什么文件要提交的,工作树很干净;说明我已经提交成功了,证明工作区所有的文件都处于"未修改" 的状态,没有任何文件需要被提交。
git status -s
是以精简的方式显示文件的状态
3.5 Git版本库
3.5.1 git add添加到暂存盘
git add my.txt
添加 my.txt 到暂存盘git add *.txt
添加 .txt 类型的文件到暂存盘git add .
添加任意类型的文件到暂存盘
3.5.2 git checkout xxx 从暂存盘取回到工作区
git checkout my.txt
从暂存盘取回 my.txt 到工作区git checkout *.txt
从暂存盘取回.txt 类型的文件 到工作区checkout .
从暂存盘取回 任意类型的文件 到工作区
3.5.3 !!!必须先添加到暂存盘,再添加到版本库**
git add .
添加到暂存盘git commit -m "提示语句"
添加版本库
git log
查看版本git reflog
查看相关版本
git reset --hard 版本号
切换版本
3.6 推送到远程
git push -u origin "master"
首次git push origin "master"
推送git push -f origin "master"
强制用本地替换远程
3.7 拉取远程分支
git fetch origin "zql"
拉取远程“zql”分支git checkout zql
切换到本地zql 分支git pull origin "zq"
拉取并合并到本地zql 分支
3.8 下载远程到本地
- git clone 远程地址
3.9 远程仓库
- 新建仓库(要去Gitee注册一下账号,这里就不介绍了)
git remote add origin 仓库地址
添加远程仓库
- 添加到远程仓库
git remote add origin 仓库地址
- 添加到版本库
git add .
git commit -m "提示"
- 推送到远程(第一次推送时的命令)
git push -u origin “master”
- 第二次推送
git push origin "master"
4- Git分支
4.1 分支的概念
分支就是科幻电影里面的平行宇宙,当你正在电脑面前学习Git 的时候,另一个你正在另一个平行宇宙里努力学习SVN。
如果两个平行宇宙互不干扰,那对现在的你也没啥影响。
不过,在某个时间点,料哪个给平行宇宙合并了,结果,你既学会了Git 又学会了SVN。
4.2 分支在实际开发中的作用
在进行多人写作开发的时候,为了防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行项目功能的开发。
4.3 master 主分支
在初始化本地Git仓库的时候,Git 默认已经帮我们创建了一个名字叫master 的分支,通常我们把这个master分支叫做主分支。
在实际工作的时候,master 主分支的作用是:用来保存和记录整个项目已完成的功能代码。
因此,不允许程序员直接在master分支上修改代码,因为这样做的风险太高,容易导致整个项目崩溃。
4.4 功能分支
由于程序员不能直接在master 分支上进行功能的开发,所以就有了功能开发的概念。
功能开发指的是 专门用来开发新功能的分支 ,它是临时从master 主分支上分叉出来的,当新功能开发且测试完毕后,最终需要合并到master 主分支上
4.5 分支基本操作
4.5.1 查看分支列表
使用如下的命令,可以查看当前Git仓库中所有的分支列表:
git branch
4.5.2 创建新分支
使用如下的命令,可以基于当前分支,创建一个新的分支,此时,新分支中的代码和当前分支完全一样:
git branch 分支名称
4.5.3 切换分支
使用如下的命令,可以切换到指定的分支上进行开发:
git checkout login
4.5.4 分支 的快速创建和切换
使用如下的命令,可以切换到指定名称的分支上,并立即切换到新分支上进行开发:
-b //表示创建一个新分支
checkout // 表示切换到刚才新建的分支上
git checkout -b 分支名称
4.5.5 合并分支
功能分支的代码开发测试完毕之后,可以使用如下的命令,将完成后的代码合并到master主分支上:
// 1.切换到master 分支
git checkout master
// 2.在master 分支上运行 git merge 命令,将login 分支的嗲吗合并到master 分支
git merge login
4.5.5 删除分支
当把功能分支的代码合并到master 主分支上以后,就可以使用如下的命令,删除对应的功能分支:
git branch -d 分支名称
注意:想删除某一分支,就得确保不在该分支上
4.5.6 遇到冲突时的分支合并
如果在两个不同的分支中,对同一个文件进行了不同的修改,Git就没法干净的合并它们。此时。我们需要打开这些包含冲突的文件然后手动解决冲突
5- 案例附图
- 操作 (演练)
- 创建新分支
- 组员把远程 分支 拉到本地
- 组员提交文件
- 组长合并组员文件
- 组长上传一个新的文件
- 组长推送新分支,组员拉取分支