Git神器 初体验-本地仓库:小结必会知识点
目录
1.Git(分布式版本控制系统)
Git(读音为/gɪt/)是一个开源的 分布式版本控制系统 ,可以有效、高速地处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核 开发而开发的一个开放源码的版本控制软件。
2.Git 与 SVN 区别:
(摘自菜鸟教程)
-
Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
-
如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。
Git 与 SVN 区别点:
1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
3.Git的工作流程
4.Git的基本使用以及注意事项
4.1 Git使用前的配置
(以下所有操作都是在你写项目的根文件夹中运行 Git Bash 控制台)
在使用git之前,需要告诉git你是谁,在向git仓库中提交时需要用到
- 配置提交人姓名:
git config --global user.name 提交人姓名
温馨提示:(名字最好是英文) - 配置提交人邮箱:
git config --global user.email 提交人邮箱
温馨提示:(邮箱可以随便写,我写的是自己的qq邮箱) - 查看配置信息:
git config --list
-
另一种查看方式:
- 注意!
- 如果要对一次配置信息进行修改,重复上述命令即可(比如我想改用户名就直接再执行一次配置用户名的指令,最后面写上自己二次修改的用户名)
- 配置只需要执行一次
4.2 提交步骤
-
git init
初始化一个git仓库
-
注意!初始化的仓库是 自动隐藏 起来的,需要设置一下就能显示出来(文件处于半透明状态,说明是虚拟的),设置如下:
-
git status
查看文件状态
- 创建一个根目录创建index.html,写少许内容进去,保存
-
git status
出现如下界面:
3.git add 文件列表
追踪文件 (其实就是把文件放入暂存区,还没进入git仓库里) - 无任何提示则说明添加成功
-
git status
可查看现在index.html文件状态
-
git commit -m 提交信息
向仓库中提交代码 (此时代码从暂存区到了git仓库中) -
git log
查看提交记录
- 此时 输入
git status
,可看到工作树很干净,无文件需要提交
4.3 撤销操作
- 用暂存区中的文件覆盖工作目录中的文件:
git checkout 文件名
- 将文件从暂存区中删除:
git rm --cache 文件
- 将git仓库中指定的更新目录恢复出来,并且覆盖暂存区和工作目录:
git rest --hard commit ID
,(这里的ID是原来提交是管理器自动生成的,复制粘贴过来即可)
4. git rm -r --cached 文件名
(如果代码提交错误,则使用这指令,可以使代码从仓库中删除)
-
有错误提交自然有误删操作,可以使用此指令恢复文件
git restore --stage 文件名
4.4 分支操作
为了便于理解,暂时可以认为分支就是当前工作目录中的代码的一个副本。
使用分支,可以让我们从开发主线上分离出来,以免影响开发主线。
4.4.1分支细分
-
主分支(master):第一次向git仓库里提交更新记录时自动产生的一个分支
-
开发分支(develop): 作为开发分支,基于master分支创建
-
功能分支(feature/*): 用于开发新的功能,不同的功能创建不同的功能分支,功能分支开发完成并自测通过之后,需要合并到 develop 分支,之后删除该分支。
-
bug修复分支(bugfix/*): bug修复分支,用于修复不紧急的bug,普通bug均需要创建bugfix分支开发,开发完成自测没问题后合并到 develop 分支后,删除该分支。
-
发布分支(release/*): 用于代码上线准备,该分支从develop分支创建,创建之后由测试同学发布到测试环境进行测试,测试过程中发现bug需要开发人员在该release分支上进行bug修复,所有bug修复完后,在上线之前,需要合并该release分支到master分支和develop分支。
-
紧急bug修复分支(hotfix/*): 该分支只有在紧急情况下使用,从master分支创建,用于紧急修复线上bug,修复完成后,需要合并该分支到master分支以便上线,同时需要再合并到develop分支。
三大分支:主分支 开发分支 功能分支
顺序:功能分支(feature/*): -> 开发分支(develop): -> 主分支(master):
4.4.2 分支命令
-
git branch
查看所处当前分支 -
git branch 分支名称
创建分支 -
git checkout 分支名称
切换分支
-
注意! 在切换分支是当前分支下的文件代码必须 先提交或者暂时保存 , 否则,当前文件会被代入其他分支,导致文件混乱。
实例如下:
- 解决方案:
方法1:切换分支之前先保存到git仓库 git commit -m 提交说明
方法1:暂时保存更改 (推荐使用方案)
在git中,可以暂时提取分支上所有的改动并储存,让开发人员得到一个干净的工作副本,临时转向其他工作。
使用场景:分支临时切换
- 储存临时改动:
git stash
- 恢复改动:
git stash pop
以下实现分支切换,想过和方法一 一样
4.git merge 来源分支名称
合并分支
5. git branch -d 分支名称
删除分支 (分支被合并了才允许被删除) (-D 强制删除)
已合并:
未合并: