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 - 管理远程

然后点击 +

就可以连接仓库了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十七、SpringAMQP

目录 一、SpringAMQP的介绍: 二、利用SpringAMQP实现HelloWorld中的基础消息队列功能 1、因为publisher和consumer服务都需要amqp依赖,因此这里把依赖直接放到父工程mq-demo中 2、编写yml文件 3、编写测试类,并进行测试 三、在consumer…

HarmonyOS ArkTS 应用添加弹窗(八)

概述 在我们日常使用应用的时候,可能会进行一些敏感的操作,比如删除联系人,这时候我们给应用添加弹窗来提示用户是否需要执行该操作,如下图所示: 弹窗是一种模态窗口,通常用来展示用户当前需要的或用户必须…

去除表格中的网格线

去除表格中的网格线 在excel中如何得到下图2的效果 点开视图,去除网格线 最后输出为图片

「L2C」型行业从线索到成交,听懂客户之「声」是关键

存量经营时代下,营销变得越来越难。无论是稳流量,或是促活跃,转化率就是难以提升。 相比传统快消行业,线索型(L2C,Leads to Cash)行业因为客单价高、决策周期长、用户触点分散等特性&#xff0…

CRM系统中的联系人是什么?如何进行联系人管理?

上手CRM系统前掌握专业术语是必要的功课,在第一次使用CRM系统时小编和大家一样,分不清楚线索、联系人、客户、商机之间的关系,今天我们就来着重分享一下CRM中联系人是什么?如何进行联系人管理? CRM系统联系人是指能够…

2023年国自然植物科学相关面上项目信息公布(小麦、大麦、棉花、大豆、玉米)

2024年申报国自然项目基金撰写及技巧http://mp.weixin.qq.com/s?__bizMzA4NTAwMTY1NA&mid2247575761&idx1&sn32dbacd3393f3b76a1e0668e4b8b3c89&chksm9fdd7c08a8aaf51ec31d4790067bb57751a09947eeb7e728b8c008d26b89adba37e0cab32a62&scene21#wechat_redi…

梨花声音课堂,真诚和情感展现家庭生活场景,易使观众产生共鸣

在为家庭剧的配音工作时,配音员要能够传递出剧中角色在日常生活中所经历的情感波动,以及家庭关系中的温情、矛盾和解决问题的过程。家庭剧着重描绘亲情纽带和人物间的真挚交往,因此配音的真实感和情感表达尤为重要。以下是针对家庭剧配音的几…

毕业设计2049网上选课系统JSP【程序源码+文档+调试运行】

摘要 本文详细介绍了一个网上选课系统的设计与实现过程。该系统主要分为学生用户、管理员和教师用户三个模块,涵盖了用户登录、在线选课、信息管理、密码修改等功能。通过对系统功能的分析,进行了数据库设计和界面设计,并进行了测试和优化。…

Java线程的学习

本来我以为这可能只是Java里的一小块知识点,但当我搜索自己关注的Up主的网课时,觉得还是开一个系列来记录好了。我的记录绝不仅仅是照搬课程中的内容,我会带上自己的理解以及示例代码、并且是按照本人的专业课老师上课的节奏来记录&#xff0…

Redisson 分布式锁实战应用解析

文章目录 前言一、Redisson介绍二、Redisson的使用1.1 引入依赖1.2 编写配置1.3 示例测试_011.4 示例测试_02 三、Redisson源码分析2.1 加锁源码2.2 看门狗机制 前言 分布式锁主要是解决分布式系统下数据一致性的问题。在单机的环境下,应用是在同一进程下的&#x…

【报错记录】解决使用Kotlin写的SpringBoot项目使用Aspect切面无法生效的问题

前言 为了能在SpringBoot使用Kotlin,真的是各种坑都彩礼一遍,这次遇到的问题是Aspect无法对Kotlin代码生效。我这里的使用场景是使用切面切Controller中的方法,用来对接口进行一些初始化和收尾工作。 Aspect在Controller类还是Java代码的时…

迁新址 启新程|美创科技杭州总部乔迁仪式圆满举行

“迁新址 启新程” 2023年11月21日 美创科技杭州总部乔迁仪式隆重举行 杭州未来科技城管委会、余杭国投集团、浙江省网络空间安全协会、浙江鸿程、华睿投资、金艮投资、如山资本、赛伯乐投资、宽带资本、普华投资、国中创投、密码资本、东方富海、之江商学、阿里云、联通&…

cc linux用root用户执行chmod 777 -R ./提示 Operation not permitted怎么办?

如果你作为 root 用户执行 chmod 777 -R ./ 命令时收到 “Operation not permitted” 错误,可能有几个原因: 不可更改 (Immutable) 文件属性: 文件可能被设置为不可更改。即使是 root 用户也不能修改这些文件的权限。使用 lsattr 命令查看文件…

Oracle与Redis Enterprise协同,作为企业缓存解决方案

来源:虹科云科技 虹科干货丨Oracle与Redis Enterprise协同,作为企业缓存解决方案 欢迎关注虹科,为您提供最新资讯! 单独使用Oracle作为企业缓存数据库时,会出现哪些问题呢?使用Redis Enterprise与Oracle共…

使用 Filebeat+Easysearch+Console 打造日志管理平台

近年来,日志管理平台越来越流行。使用日志管理平台可以实时地、统一地、方便地管理和查看日志,挖掘日志数据价值,驱动运维、运营,提升服务管理效率。 方案架构 Beats 是轻量级采集器,包括 Filebeat、Metricbeat 等。E…

基于vue的three.js学习

vue安装three.js,并创建第一个入门场景 安装three.js npm install --save three引入three.js import * as THREE from threethree.js结构 three.js坐标 创建一个场景 scene场景,camera相机,renderer渲染器 创建一个场景 this.scene new T…

这7款神仙软件,程序员必备!

如果你是程序员、开发者、网络运维等 IT 从业者日常工作中大家肯定会用到很多网站,今天给大家带来7款压箱底的神仙软件,希望可以帮助有需要的码农朋友实现更高效地办公。 一、Everything 适用:本地文件搜索神器 就是为了极速检索而生,其实…

yapi==使用依赖包里的类作为入参/返回值导出后没有备注

比如模块A中有个MyDemoEntity类&#xff0c;在B中以依赖的形式引入了A&#xff0c;并在B的接口中以MyDemoEntity作为返回值&#xff0c;导出到YAPI发现MyDemoEntity的备注没了。 解决&#xff1a; 将A的内容安装到本地MAVEN仓库&#xff0c;并且需要将源码也一起安装 <buil…

探索锦食送如何通过API集成无代码开发技术提高电商平台和营销系统效率

探索锦食送无代码开发集成技术 随着电子商务和营销系统的快速发展&#xff0c;企业不断寻求更高效和灵活的管理方式。锦食送&#xff0c;作为高端餐饮外卖服务的领先者&#xff0c;通过无代码开发的API集成技术&#xff0c;实现了电商平台和营销系统的高效管理。这种创新的连接…

# 学习 Prolog 和 离散逻辑的16个等价公式:一趟有趣的逻辑之旅

Prolog 的语法很奇怪,需要一些时间来适应,所以我花了点时间,想用Prolot来学习和验证离散逻辑的16组等价公式。 1. 双重否定律 (Double Negation Law) A ⇔A 首先&#xff0c;我们来看看双重否定律。在 Prolog 中&#xff0c;我们可以这样验证它&#xff1a; fun1(A,Z):-memb…