一文快速掌握git操作

104 阅读5分钟

前言

这个是看黑马的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

就可以看到自己配置的一些东西了

image-20230818135642744

仓库

这个是用来记录文件状态内容的地方,存储着修改的历史记录。

创建的方法有俩种

  1. 从本地文件夹转换为git仓库:git init
  2. 从其他服务器上克隆git仓库

之后就得到了一个空白的.git的文件夹,这个就是一个仓库

image-20230818135921653

git的三个区域

  • 工作区:实际开发时操作的文件夹
  • 缓存区:保存之前的准备区域
  • 版本库:提交并保存缓存区的内容,产生一个版本快照

image-20230818140117735

大概的流程就是这样。

这里涉及到了三个命令

image-20230818140151985

其中git ls-files

可以查看暂存区内的文件

image-20230818140417870

之后进行git commit -m进行提交,出现下面的提示,就算是提交成功了。

文件状态

有两个状态

  • 未跟踪:新文件,未被Git管理过
  • 已跟踪:Git已经知道和管理的文件

image-20230818140824213

所以说,git的一个基本使用流程那就是,修改文件,暂存,提交保存记录,如此反复

同时,我们可以通过git status -s来查看文件状态。

暂存区的使用

他可以暂时存储,可以临时恢复代码内容,与版本库解耦

他的另外一个作用,就是当你需要完全确定覆盖时使用

image-20230818142015760

这个时候用到的就是

git restore 目标文件

包括从暂存区移除文件就是

git rm --cached

回退版本

也就是把某次提交恢复到工作区/缓存区

查看提交记录的代码:

git log --oneline

之后我们的回退命令

git reset --soft 版本号(其他文件未跟踪)

这个也叫保留模式

git reset --hard 版本号

这个叫做覆盖模式属于直接覆盖到工作区和暂存区

git reset --mixed 版本号
等价于
git reset

这个就是覆盖暂存区,保留工作区。

我们用一个图来说明这几个关系的区别

image-20230818175854621

一般使用hard的方式是比较多的

假如说回退之后,我们再用git log --oneline的话是没有办法看到后续的版本号的

这个时候我们就需要使用

git reflog --oneline

来查看我们所有的操作日志

删除文件

步骤:

  1. 手动删除工作区文件
  2. 暂存变更/手动删除缓存区文件造成变更
  3. 提交保存

也就是直接使用

git add .

忽略文件

.gitignore 文件可以让git彻底忽略跟踪指定文件

例如

  • 系统或软件自动生成的文件
  • 编译产生的结果文件
  • 运行时生成的日志文件,缓存文件,临时文件等
  • 涉密文件,密码,秘钥等文件

image-20230818181033722

分支

本质上就是指向提交节点的可变指针,默认名字是master

注意:HEAD指针影响工作区/暂存区的代码状态

也就是说HEAD所指向的,就是用到的分支

场景应用:开发新需求/修复bug,保证主线代码随时可用,多人协同开发提高效率。

image-20230818184621223

创建分支命令

git branch 分支名

切换分支

git checkout 分支名

查看所有分支

git branch  

合并与删除

切回到要合并的分支上:

git checkout master

合并其他分支过来:

git merge 分支名

删除合并后的分支指针

git branch -d 分支名

合并与提交

image-20230818185957482

这个我们只需要了解一下就可以了。

就是因为我们的原来的分支产生了新的提交记录。

流程和前面的是一样的。

需要注意的是,提交的记录的顺序是按照产生的先后顺序,而非提交的先后顺序

合并冲突

这个字面上来说就很好理解。我们来举个例子

基于master新建一个publish分支,修改html文件的title标签,并提交一次

切换到master,也在修改内容页面html文件的title标签,并且提交一次

冲突:把publish分支合并到master回来

也就是说 不同分支中,对同一个文件的同一部分修改,git无法干净的合并,产生合并冲突。

也就是有这个错误

image-20230818190535989

在vscode中,有这样的提示

image-20230818190553996

常用命令

image-20230818190948512

image-20230818191202912

Git远程仓库

托管在互联网中的你的项目的版本库

作用:保存版本库的历史记录,多人协作

创建:公司自己服务器/第三方托管平台(gitee,gitlab,github)

黑马这里介绍的是gitee

这个我觉得命令的作用很小。因为一般的开发工具都是可以用的,完全不需要命令。所以这里就不做详细的介绍。