前言
这个是看黑马的ajax入门中的git内容,自己做的一些笔记。
推荐再看完后,进行练习:Learn Git Branching
这个是github上热门的一个开源项目,专门练习git操作的一个网站。
除此之外,可以访问我的个人博客去查看git更加深入的研究等:个人主页 | 小uの学习笔记 (guoyaxue.top)
git就是一个免费开源的,分布式的代码版本控制系统,帮助开发团队维护代码。
作用就是记录代码内容,切换代码版本,多人开发时搞高效的合并代码的一个开源软件。
首先就是进行用户信息的配置
这里需要配置的是用户名和邮箱
分别是用
git config --global user.name "xiaou"
以及
git config --global user.email "xxx@xxx.com"
这个就是只用配置一次就可以的。之后用
git config --list
就可以看到自己配置的一些东西了
仓库
这个是用来记录文件状态内容的地方,存储着修改的历史记录。
创建的方法有俩种
- 从本地文件夹转换为git仓库:git init
- 从其他服务器上克隆git仓库
之后就得到了一个空白的.git的文件夹,这个就是一个仓库
git的三个区域
- 工作区:实际开发时操作的文件夹
- 缓存区:保存之前的准备区域
- 版本库:提交并保存缓存区的内容,产生一个版本快照
大概的流程就是这样。
这里涉及到了三个命令
其中git ls-files
可以查看暂存区内的文件
之后进行git commit -m进行提交,出现下面的提示,就算是提交成功了。
文件状态
有两个状态
- 未跟踪:新文件,未被Git管理过
- 已跟踪:Git已经知道和管理的文件
所以说,git的一个基本使用流程那就是,修改文件,暂存,提交保存记录,如此反复
同时,我们可以通过git status -s来查看文件状态。
暂存区的使用
他可以暂时存储,可以临时恢复代码内容,与版本库解耦。
他的另外一个作用,就是当你需要完全确定覆盖时使用。
这个时候用到的就是
git restore 目标文件
包括从暂存区移除文件就是
git rm --cached
回退版本
也就是把某次提交恢复到工作区/缓存区
查看提交记录的代码:
git log --oneline
之后我们的回退命令
git reset --soft 版本号(其他文件未跟踪)
这个也叫保留模式
git reset --hard 版本号
这个叫做覆盖模式属于直接覆盖到工作区和暂存区
git reset --mixed 版本号
等价于
git reset
这个就是覆盖暂存区,保留工作区。
我们用一个图来说明这几个关系的区别
一般使用hard的方式是比较多的
假如说回退之后,我们再用git log --oneline的话是没有办法看到后续的版本号的
这个时候我们就需要使用
git reflog --oneline
来查看我们所有的操作日志
删除文件
步骤:
- 手动删除工作区文件
- 暂存变更/手动删除缓存区文件造成变更
- 提交保存
也就是直接使用
git add .
忽略文件
.gitignore 文件可以让git彻底忽略跟踪指定文件
例如
- 系统或软件自动生成的文件
- 编译产生的结果文件
- 运行时生成的日志文件,缓存文件,临时文件等
- 涉密文件,密码,秘钥等文件
分支
本质上就是指向提交节点的可变指针,默认名字是master
注意:HEAD指针影响工作区/暂存区的代码状态
也就是说HEAD所指向的,就是用到的分支
场景应用:开发新需求/修复bug,保证主线代码随时可用,多人协同开发提高效率。
创建分支命令
git branch 分支名
切换分支
git checkout 分支名
查看所有分支
git branch
合并与删除
切回到要合并的分支上:
git checkout master
合并其他分支过来:
git merge 分支名
删除合并后的分支指针
git branch -d 分支名
合并与提交
这个我们只需要了解一下就可以了。
就是因为我们的原来的分支产生了新的提交记录。
流程和前面的是一样的。
需要注意的是,提交的记录的顺序是按照产生的先后顺序,而非提交的先后顺序
合并冲突
这个字面上来说就很好理解。我们来举个例子
基于master新建一个publish分支,修改html文件的title标签,并提交一次
切换到master,也在修改内容页面html文件的title标签,并且提交一次
冲突:把publish分支合并到master回来
也就是说 不同分支中,对同一个文件的同一部分修改,git无法干净的合并,产生合并冲突。
也就是有这个错误
在vscode中,有这样的提示
常用命令
Git远程仓库
托管在互联网中的你的项目的版本库
作用:保存版本库的历史记录,多人协作
创建:公司自己服务器/第三方托管平台(gitee,gitlab,github)
黑马这里介绍的是gitee
这个我觉得命令的作用很小。因为一般的开发工具都是可以用的,完全不需要命令。所以这里就不做详细的介绍。