Git - 版本控制系统

目录

一、概述

配置用户信息

二、Git仓库

创建

本地仓库

git的三个区域

示例 

Git文件状态

举例

三、区域使用

暂存区使用

版本库使用

文件忽略

四、分支

步骤

合并与删除

步骤

合并与提交

合并冲突

五、常用指令

六、Git远程仓库

使用步骤 

克隆

同步

七、图形化界面中使用Git

VScode上使用git

在idea中使用git

克隆git

添加远程仓库


一、概述

        git是一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码。作用是记录代码内容,切换代码版本,多人开发时高效合并代码内容。

直接安装git,默认下一步,然后就能在VScode中看到git控制台

配置用户信息

配置:用户名和邮箱,应用在每次提交代码版本时表明自己的身份。

命令:

        git config --global user.name "在这里设置名字"

        git config --global user.email "在这里设置邮箱"

设置完毕后使用命令 git config --list 查看配置是否生效


二、Git仓库

Git仓库:记录文件状态内容的地方,存储着修改的历史记录

创建

1、把本地文件夹转换成Git仓库:命令git init

2、从其他服务器上克隆git仓库

本地仓库

打开一个程序,执行命令git init,这会生成一个.git文件夹,这是用来保存文件的

创建好的.git文件夹是隐藏目录,不打开隐藏可见的话是看不到的

git的三个区域

工作区:实际开发时操作的文件夹

暂存区:保存之前的准备区域(暂存改动过的文件)

版本库:提交并保存暂存区的内容,产生一个版本快照

命令作用
git add 文件名暂存指定文件
git add .暂存所有改动的文件(推荐)
git commit -m "注释说明"提交并保存,产生版本快照

示例 

现在我们有一个程序,我们尝试将它上传至git管理

git ls-files 这个指令可以查看是否成功存入暂存区,之后再提交

这样即代表提交成功

注意:

        出现这种警告是因为文件中有多余的空白字符。由于编辑器的不同或者文件行尾的换行符在 Windows 下被替换了,一些细微的空格变化会不经意地混入提交,造成麻烦。虽然这是小问题,但它会极大地扰乱跨平台协作。

具体可以查看这篇博客icon-default.png?t=N7T8https://blog.csdn.net/u012757419/article/details/105614028


Git文件状态

git文件有两种状态

        未跟踪:新文件、从未被Git管理过(U)

        已跟踪:Git已经知到和管理的文件(A)

版本查看指令:git status -s

        这与git的基本使用相关,先总结一下上面的内容,我们书写一个程序,此时它的状态为未修改(’‘)。我们使用git add指令后,git会将它放入暂存区中,程序变为已修改状态(M),直到我们使用git commit命令,git才会将我们所写的程序以版本的形式存入版本库,未来我们可以通过这个回退版本。注意提交并不会清空暂存区,且会让项目文件重置为未修改状态

        因此git的基本使用就是: 修改文件,暂存,提交保存记录,如此反复

举例

更改文件,文件的后面就会有 M 标记,这代表此时它被修改了

或者此时可以输入指令  git status -s ,确实处于 M 已修改状态

提交会清空状态


三、区域使用

暂存区使用

暂存区作用:可以恢复代码内容,与版本库解耦。

git restore [ 目标文件 ]:使用这个命令 ,即可让暂存区的目标文件覆盖工作区的目标文件(确认真的要覆盖的时候再使用)

git rm --cached [ 目标文件 ]:从暂存区中移除文件

版本库使用

版本回退:将版本库的某个版本对应的内容快照,恢复到工作区/暂存区

查看提交历史:git log --oneline

、 

回退指令:

git reset --soft [ 版本号 ]:新添加的文件,也就是未被跟踪的文件会被保留

git reset --hard [ 版本号 ]:新添加的文件,也就是未被跟踪的文件会被删除,完完全全的恢复到保存的版本

git reset --mixed [ 版本号 ]:工作区中未被跟踪的文件会被保留,而暂存区中的会被删除,这个与直接输入git reset的效果一样

文件忽略

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

目的:让git仓库更小更快,避免重复的无意义文件管理

例如:

  1. 系统或软件自动生成的文件
  2. 编译时产生的结果文件
  3. 运行时生成的日志文件、缓存文件、临时文件等
  4. 涉密文件,密码,密钥等

前端文件中,一般都忽略这些文件。


四、分支

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

简单来说,就是一个容器,可以保存某个提交的节点记录。

使用场景:

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

比如:在现有的代码上创建新的分支完成内容列表业务,突然需要紧急修复bug -> 单独创建分支解决bug

步骤

  1. 创建分支:git branch [ 分支名 ]
  2. 切换分支:git checkout [ 分支名 ]
  3. 工作区准备代码并暂存提交

这里面我创建了一个分支content,当我们切换回master时,我们所写的content的代码都不见了,但是我们切换回来的时候就出现了。

合并与删除

将写好的分支合并回到master分支上,并删除分支

指令:git merge [ 分支 ]

步骤

  1. 切回到要合入的分支上:git check master
  2. 合并其他分支:gir merge [分支]
  3. 删除合并后的分支指针:git branch -d [分支]

查看版本列表,成功合并

删除分支

合并与提交

如果有多条分支,且在合并的时候发现已经被别的分支合并过了,那么就会自动生车成一个新的分支,这个分支下会拥有所有的代码

使用指令git merge content

注意:这个指令这会比较不同分支的提交时间,因此以时间为顺序合并到分支上

使用指令检验一下分支

发现content指向8而不是10

合并冲突

这个错误只能手动解决,让两个不同的文件相同,否则无法合并

因此为了避免


五、常用指令

总结一下 上面涉及的指令

命令作用注意
git -v查看git版本
git init初始化git仓库
git add [ 文件标识 ]暂存某个文件这个文件路径要以终端为起始的相对路径
git add .暂存所有文件
git commit -m " 说明注释 "提交版本记录提交的是暂存区的内容
git status查看文件状态 -详细信息
git status -s查看文件状态 -简略信息第一列是暂存区状态,第二列是工作区状态
git ls -files查看暂存区文件列表
git restore 文件标识从暂存区恢复到工作区若文件标识为 . 那么就是恢复全部文件 
git rm --cached 文件标识从暂存区移除文件
git log查看提交记录 -详细信息
git log --oneline查看提交记录 -简略信息版本号 分支指针 提交时说明注释
git reflog --oneline查看完整历史包括提交,切换,回退等记录
git reset 版本号切换版本代码到暂存区和工作区--hard 不保留任何文件
git branch 分支名创建分支
git merge 分支名合并分支
git branch -d 分支名删除分支
git branch查看本地分支
git checkout 分支名切换分支
git checkout -b 分支名创建并立刻切换分支


六、Git远程仓库

概念:托管在因特网或其他网络中的项目的版本库

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

创建:公司自己的服务器 / 第三方托管平台(Gitee,GitLab,GitHub...)

使用步骤 

我们在这里使用第三方托管平台Gitee

1、注册账号

2、新建仓库得到远程仓库Git地址

3、本地Git仓库添加远程仓库原点地址

        命令:git remote add 远程仓库名 本地和远程分支名

4、本地Git仓库推送版本记录到远程仓库

        命令:git push -u 远程仓库名 本地和远程分支名

        例如:git push -u origin master

在gitee中创建一个仓库,其中有两种地址

连接一下地址,会发现有两个地址

如果想要取消连接,那么就使用指令

git remote remove origin   移除仓库

提交版本至远程仓库,使用指令git remote push -u origin master,如果是第一次使用gitee,那么就会出现登录界面,登录就行了

如果你的项目中有README.md文件,那么在gitee网页上就会展示出来作为这个项目的介绍和使用说明 

克隆

拷贝一个Git仓库到本地,进行使用

要克隆首先要准备一个空文件夹

然后使用Git的窗口

 

同步

多人协同开发:想要看到别人同步上去的最新内容:git pull origin master

通过这个,当别人的项目更新了就不需要重新克隆一个了,直接pull过来就行了


七、图形化界面中使用Git

VScode上使用git

vscode左边会有这么一个工具,叫做源代码管理

其中会显示有更改的文件

只要点击就会对比两个文件的修改位置,左边是更改前,右边是更改后 。点击加号 + 就会保存修改将其保存在暂存区

点击提交就会提交到本地仓库中

点击同步更改就会将本地仓库中的记录推送到远程仓库中

可以看到是拉去并推送提交

就是说底层是先pull了一下再push的,这是因为再多人协作的时候,如果两个人同时修改了同一个文件,但是彼此又不知道。那么先push的人就可以修改成功,后push的人就会发生合并冲突,如果强制push,远端仓库会自动合并,保留出现冲突的内容(上一个版本和刚提交的内容都会被保留下来)。这时代码将不能正常运行,其他同事在执行 pull 拉取新代码后会发现无法运行,这就给别人造成了很大的麻烦。所以即使是自己使用命令行操作git,也要养成push前先pull一下的习惯。

在idea中使用git

1、在设置中配置git,在idea中使用git,本质上还是使用的本地安装的git软件。

2、获取仓库

点击创建Git仓库,将仓库创建到这个项目中,则此时项目中就会多一个.git文件夹,相当于git init

VCS也会变成git,用于可视化操作git指令 

克隆git

打开idea界面,点击VCS获取

或者准备一个空项目,点击VCS的从版本控制中获取

在这里输入URL

添加远程仓库

右键文件,点击git - 管理远程

然后点击 +

就可以连接仓库了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/176167.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一键合并多个TXT文本,将保存在TXT的快递单号进行一键合并

如果你需要处理大量的TXT文本文件,那么你可能会遇到需要将这些文件合并为一个文件的情况。这不仅涉及到文件的组织和管理,还可能涉及到文件内容的连贯性和完整性。现在,我们有一个强大的工具,可以帮助你轻松实现一键文件整理&…

身份证号码校验

根据《新版外国人永久居留身份证适配性改造要点》,公司需要把代码中对身份证的校验进行优化 就文档内容可以看到需要优化的要点是: 新版永居证号码以 9 开头 受理地区代码出生日期顺序码校验码;(共18位) eg&#xff…

2023年约特干故城夜间演艺《万方乐奏有于阗》完美谢幕

11月19日,记者走进约特干故城看到演员在欢乐地跳着刀郎舞和古典舞,庆祝今年以来夜间演艺《万方乐奏有于阗》演出200场完美谢幕。 11月19日在约特干故城,演员正在表演迎宾乐舞。阿卜力克木依卜拉依木摄 当天晚上,城楼上旌旗猎猎&am…

Transmit v5.10.3(FTP客户端)

Transmit 5是一款由Panic开发的功能强大的FTP(文件传输协议)客户端软件,专为 macOS 平台设计。它提供了简单、直观的界面和丰富的功能,使用户能够轻松地管理和传输文件。 在文件传输和同步方面,Transmit 5提供了强大的文件同步功能&#xff…

18张值得收藏的高清卫星影像

这里分享的18张高清卫星影像,由吉林一号卫星拍摄。 原图来自长光卫星嘉宾在直播中分享的PPT演示文档。 18张高清卫星影像 吉林一号高分04A星,于2022年05月21日拍摄的北京紫禁城高清卫星影像。 北京紫禁城 云南昆明滇池国际会展中心高清卫星影像&…

【STM32外设系列】JW01三合一空气质量检测模块

🎀 文章作者:二土电子 🌸 关注公众号获取更多资料! 🐸 期待大家一起学习交流! 文章目录 一、JW01模块简介二、数据格式介绍三、程序设计3.1 串口初始化3.2 串口接收中断服务函数3.3 数据解析函数 四、其他…

思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞

思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞 一、漏洞描述二、漏洞影响三、网络测绘四、漏洞复现1.手动复现2.自动化复现3.python源代码 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任…

OOM问题排查+Jvm优化

OOM问题排查: 1、top命令:查看cpu和内存的使用情况。 2、jstat命令:查看YGC和FGC情况,一般都是老年代不够用。导致OOM 3、jmap命令: 查看哪个类的实例过多,以每个类占用多少了内存。4、jstack 查看线程与线程之间的阻…

【广州华锐互动】昆虫3D虚拟动态展示:探索神奇的微观世界

在这个充满科技魅力的时代,我们可以通过各种方式去了解和探索自然界的奥秘。而昆虫作为地球上最为丰富多样的生物群体之一,其独特的生活习性和形态特征一直吸引着人们的目光。 由广州华锐互动开发的昆虫3D虚拟动态展示系统,成为了一种全新的科…

原始类型 vs. 对象(基本类型 vs. 引用类型)

原始类型 首先我们先看一段代码: let age 30; let oldAge age; age 31; console.log(age); console.log(oldAge);在 JavaScript 中,原始类型的赋值是通过值复制的方式进行的,而不会相互影响。只有对象类型的值才是通过引用复制的方式进行…

【数据结构(三)】双向链表(2)

文章目录 1. 基本概念2. 管理双向链表的思路3. 代码实现 1. 基本概念 管理单向链表的缺点分析: ①单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。     ②单向链表不能自我删除,需要靠辅助节点 ,而双向…

基于springboot实现在线外卖平台系统项目【项目源码】

基于springboot实现在线外卖平台管理系统演示 Java技术 Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的…

AUTOSAR实战篇:基于ETAS工具链的信息安全协议栈集成指南

AUTOSAR实战: 基于ETAS工具链的信息安全协议栈集成指南 前言 小T出品,必是精品! 手把手带你集成信息安全协议栈,你值得拥有! 正文 随着汽车信息安全的不断发展与完善,其在汽车电子领域如智能驾驶(ADAS),智能座舱等方向上不断被重视起来,越来越多的Tier1,主机厂都在全面…

LeetCode:2304. 网格中的最小路径代价(C++)

目录 2304. 网格中的最小路径代价 题目描述: 实现代码: dp(dp有很多相似的经典题目,比较简单,不再给出解析) 2304. 网格中的最小路径代价 题目描述: 给你一个下标从 0 开始的整数矩阵 grid …

中国信息通信研究院发布《中国金融科技生态白皮书》(2023)

加gzh“大数据食铁兽”,回复“20231122”,获取材料完整版 导读 本白皮书是中国信息通信研究院连续第六年针对金融科技领域的跟踪研究成果,聚焦过去一年来国内外金融科技领域新的发展情况,重点分析了中国金融科技产业、技术、市…

vue3组件化开发页面之渲染函数实现

文章目录 前言一、渲染机制虚拟 DOM渲染管线 二、渲染函数基本用法声明渲染函数Vnodes 必须唯一 三、页面使用渲染函数及组件配置总结如有启发,可点赞收藏哟~ 前言 组件化开发是目前开发的常态 本文记录页面拆分多个不同组件模块,然后再基于渲染函数实现…

智能交通收费RFID读写器在不停车收费(ETC)系统中的应用

随着公路收费规模的不断扩大,传统的人工收费效率低下,收费没有监督,导致票款流失严重甚至还有车辆非法逃票。为了解决这些问题,引入了RFID等多种技术的新型的收费系统-不停车收费(ETC)系统应运而生。 电子不停车收费系统(ETC)系统…

PMP考试

一、关于准考信下载 为确保您顺利进入考场参加xxx月份考试,请及时登录本网站个人系统下载并打印准考信,准考信下载时间为xxx-xxx。如通过以上方式无法查找准考信,请您及时拨打所在考点老师联系电话,如有特殊问题,请发…

VUE+element可以为空不为空时只能为(正整数和0)的验证

rule{ 变量: [ { required: true, validator: validateparamPosition, trigger: blur }] } ​​​​​​​ ​​​​​​​ ​​​​​​​ var validateparamPosition (rule, value, callback) > { if (!value) { //先判断空可以过 ca…

VirtualBox+Vagrant安装虚拟机

文章目录 一、下载Virtualbox和Vagrant1、下载2、安装 二、安装虚拟机1、新建目录D:\VirtualMachine2、执行vagrant init centos/7命令,就会在该目录下创建Vagrantfile文件3、执行vagrant up命令4、查看当前主机分给虚拟机的网关网段5、找到D:\VirtualMachine下的Va…