当前位置: 首页 > news >正文

Git史上最详细教程(详细图解)

目录

Git简介:

什么是Git,它有什么作用?

Git四个区域

?Git四个状态:

.gitignore忽略文件

格式规范:

glob模式的正则表达式:

?操作文件

?上传至云端服务器

远程连接:

从云端拉取项目

Git分支

常用命令:


Git简介:

什么是Git,它有什么作用?

Git简单来说就是代码版本控制系统,通过他可以进行多人开发同一个项目然后讲每个人的代码块合并完成一个大项目,还能控制代码版本记录等。

Git四个区域

  1. 工作区:处理工作的区域(即做项目打代码的区域)
  2. 暂存区:已完成的工作临时存放区域,等待被提交
  3. 本地仓库:存放数据的地方,但是还在本电脑上,若电脑存储空间损坏还是会造成代码消失
  4. Git远程仓库:最终的存放区域,即远程服务器,电脑存储空间损坏也不影响远程仓库数据

Git四个状态:

  1. 未跟踪:文件没有加入到git库中,不参与版本控制,使用git add变为暂存
  2. 已暂存:表示对已修改文件的当前版本做了标记,使之包含在下次提交的列表
  3. 已修改:表示修改了文件,但还没将修改的结果放到暂存区
  4. 已提交:表示文件已经安全地保存在本地Git仓库

新建文件 —> 未跟踪(Untracked)

使用git add .或者git add ‘需要暂存文件名’ —> 已暂存(Staged)

使用git commit将文件放在本地仓库中 —> 已提交(Unmodified)

如果已经提交到本地仓库后修改了文件当前文件状态是 —> 已修改(Modified)

如果已经提交到本地仓库后删除了文件当前状态是 —> 未跟踪(Untracked)

注意:创建git文件之前就创建一个.gitignore用来忽略文件(忽略你不想上传的文件,里面可利用正则表达式)

.gitignore忽略文件

格式规范:

  1. 以#开头的是注释
  2. 以/结尾的是目录
  3. 以/开头防止递归
  4. 以!开头表示取反
  5. 可以使用glob模式进行文件和文件夹的匹配(glob指简化的正则表达式)

glob模式的正则表达式:

  1. 星号*匹配零个或多个任意字符
  2. [abc]匹配任何一个在方括号中的字符(此案例匹配一个a或匹配一个b或匹配一个c)
  3. 问号只匹配一个任意字符
  4. 在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]表示匹配所有0到9的数字)
  5. 两个星号**表示匹配任意中间目录(比如a/**/z可以匹配a/z、a/b/c或a/b/c/z等)

# 忽略 index.css 这个文件
index.css

# 忽略 test 目录下所有的文件
test/

操作文件

在项目根目录下利用git init命令创建git本地仓库(显示下面文件表示创建成功)

通过git status查看此目录下文件状态(git status -s简写形式)

上图红色表示文件未被跟踪

通过git add “文件名称”(指定文件放入暂存区) 或者git add .(表示当前所有文件放入暂存区)

绿色的A表示新添加到暂存区的文件

通过git commit -m"文件描述"上传至本地仓库

这说明已经将暂存区的文件传至到本地仓库中了

git commit -a -m“描述消息”这个命令可以跳过暂存区直接存储到本地仓库

我们将其中一个文件信息进行修改

我们修改了pro_01.html中的内容,红色M 表示修改过但没有放入暂存区

我们将修改的文件放入暂存区

绿色的M表示已将修改的文件放入了暂存区

通过git rm --cached 文件名称 移除Git仓库中对应的文件,保留工作区对应的文件

绿色D表示移除的文件,存在红色是因为只移除了本地仓库的文件,工作区的文件未被移除并且处于未被跟踪状态(通过git rm -f 文件名称 来同时移除本地仓库和工作区对应的文件)

通过git log查看所有提交历史(最近的排在最上面)

以上查看的无用信息太多可以用:

git log -2:查看最新两条历史

git log -2 --pretty=oneline:一行显示两条最新历史

git log -2 --oneline:与上个命令一样(对应提交唯一表识长度不一样,比上个命令更短)

git reflog --oneline:与上个命令一样(旧版本一行查看历史)

git log -2 --pretty=format:“%h | %an | %s”:%h提交的简写哈希值 %an作者名 %ar作者修订日期 %s提交说明

通过git reset --hard来跳转到指定历史(CommitID就是提交唯一标识即上图黄色部分)

回到了修改了pro_01.html历史上了,文件夹中删除的pro_01.html又回来了

上传至云端服务器

远程连接:

本文章用gitee做示例,相同的服务器还github等(国外的稍微有点卡)

  1. 先创建一个服务器账号点击新建仓库,创建一个新的云端仓库

建立远程链接

说明已经将项目传至远程服务器中

注意:一定要将文件保存至本地仓库,不然传不上远程服务器

上图说明已经上传至远程服务器

从云端拉取项目

拉取远程项目是需在文件内有.git文件即Git本地仓库

git pull命令从远程拉取(远程最新代码),git clone也能从远程克隆下来

Git分支

先写下分支常用命令,具体操作步骤及图解随后和密钥一同推出


常用命令:

git branch:查看分支,带*表示当前所处分支

git branch 分支名称:创建分支,只创建不使用

git checkout 分支名称:切换分支

git checkout -b分支名称:创建并切换分支

git merge 分支名称:合并分支(将c合并给a,需要在a分支上运行命令是复制分支代码,而不是剪切)

git branch -d 分支名称:删除分支(代码合并完后再删)

git branch -D 分支名称:强制删除,不管你保没保存,没提示的删除(慎用)

注意:删除分支时切走再删(先换船再炸船)

详细讲解关于Git的分支的创建与介绍_AI_huihui的博客-CSDN博客

最后

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。

相关文章:

  • Python科学计算库练习题
  • 高性能MySQL实战第10讲:搭建稳固的MySQL运维体系
  • java毕业设计茶叶企业管理系统Mybatis+系统+数据库+调试部署
  • JAVA安装教程 (windows)
  • 6.hadoop文件数据库系列讲解
  • Day11OSI与TCP/IP协议簇以及物理层
  • Javaweb学生信息管理系统(Mysql+JSP+MVC+CSS)
  • ubuntu-hadoop伪分布
  • springboot 多环境配置(pom配置Profiles变量来,控制打包环境)
  • 计算机毕业设计ssm蓟县农家院网站2zl2w系统+程序+源码+lw+远程部署
  • 刷题记录(NC16645 [NOIP2007]矩阵取数游戏,NC207781 迁徙过程中的河流,NC235953 最大m个子段和)
  • 【网络服务数据库教程】05 LAMP 部署
  • QScintilla学习大全
  • 【计算机网络】第三章:数据链路层
  • 复习C部分:1.看代码求值题 2.写三个整数代码从大到小输出 3.打印1~100中所有3的倍数 4.给定两个数,求最大公约数(递减法,辗转相除法)
  • 「译」Node.js Streams 基础
  • echarts的各种常用效果展示
  • js面向对象
  • Promise面试题,控制异步流程
  • python 学习笔记 - Queue Pipes,进程间通讯
  • React系列之 Redux 架构模式
  • Redis 中的布隆过滤器
  • tab.js分享及浏览器兼容性问题汇总
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 使用putty远程连接linux
  • 算法-图和图算法
  • 在Unity中实现一个简单的消息管理器
  • 阿里云ACE认证学习知识点梳理
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​水经微图Web1.5.0版即将上线
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #etcd#安装时出错
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (day6) 319. 灯泡开关
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (转)Linux整合apache和tomcat构建Web服务器
  • ***通过什么方式***网吧
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .aanva
  • .describe() python_Python-Win32com-Excel
  • .dwp和.webpart的区别
  • .net core 依赖注入的基本用发
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET委托:一个关于C#的睡前故事
  • .net项目IIS、VS 附加进程调试
  • @AutoConfigurationPackage的使用
  • @GlobalLock注解作用与原理解析
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [Android]竖直滑动选择器WheelView的实现