Git 版本控制系统 笔记

news2024/11/15 9:39:33

概念:一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码

作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容【团队开发同一个项目的代码版本管理】

  • 1、Git 安装

之前写了,安装、配置、错误集都有:【这个是配合项目做的,可能更好理解】

Git 安装、配置并把项目托管到码云 Gitee_打不着的大喇叭的博客-CSDN博客

1)检验成功: 打开 bash 终端(git 专用)

这里 桌面鼠标右键 选择git bash 也可以,下面那个图是 vscode里面打开的

2)命令:git -v(查看版本号) 

3、Git 配置用户信息 

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

    git config --global user.name "码云的用户名"
    git config --global user.email "码云绑定的邮箱"


  • 2、掌握 Git 仓库

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

        1)创建: 把本地文件夹转换成 Git 仓库:命令 git init  【在你项目中】

        2)从其他服务器上克隆 Git 仓库

2、需求:创建一个空白的 Git 仓库


  • 3、Git 的三个区域

  • 工作区:我们平常项目开发的文件夹【每写一部分,都可以说是一个进度】
  • 暂存区: 保存之前的储备区【在进行项目下一个内容前,可放进这暂存,项目更改,我们可以放进来替换上一个内容,继续暂存】
  • 版本库:提交 暂存区 真正已经准备好的内容,产生一个版本【可以在更改原项目后,回来看之前的保存在这的项目内容】

在开发时,你会把 需要的 项目文件添加到 已经 git init 的 文件夹中,把这个项目提交到 git 仓库,但是你在 提交到 暂存区时,发现 代码有点问题,花了两秒 改了一下,这时,不需要产生版本快照,你只要继续 git add . ,就会在暂存区替换之前暂存的内容,你再 提交到 版本库


  • 4、Git 文件状态

1、Git 文件 2 种状态:

        1)未跟踪:新文件,从未被 Git 管理过

        2)已跟踪:Git 已经知道和管理的文件

2、通过命令 git status 可查看当前文件状态【后面添加 -s 输出会更加简便些】

查看当前文件状态【后面添加 -s 输出会更加简便些】:
    git status

第一列是暂存区状态,第二列是工作区状态 

下面的两个 MM 意思:暂存区和工作区都已修改


  • 5、Git 暂存区使用

  • 暂存区:暂时存储,可以临时恢复代码内容,与版本库解耦
  • 暂存区 -> 覆盖 -> 工作区,命令:git restore 目标文件(注意:完全确认覆盖时使用)
  • 从暂存区移除文件,命令:git rm --cached 目标文件

1、查看暂存区的文件:

查看暂存区的文件 :   
    git ls-files

2、恢复成暂存区的文件内容:

恢复成暂存区的文件内容 :
    git restore 目标文件在根目录下路径

3、移除暂存区中的某个文件 

移除暂存区中的某个文件 :
    git rm --cached 目标文件在根目录下路径


  • 6、Git 回退版本

概念:把版本库某个版本对应的内容快照,恢复到工作区/暂存区

  • 注意1:只有记录在版本库的提交记录才能恢复
  • 注意2:回退后,继续修改->暂存->提交操作即可(产生新的提交记录过程)
  • 注意3:回退后,版本库各个版本还在,没有被删除

查看之前提交版本库的历史:git log --oneline

1、查看之前提交版本库的历史 :【回退的版本,不会出现在这里】
    git log --oneline

2、查看完整的日志 :
    git reflog --oneline

回车输出:[版本号] [提交的信息]
例子如图:a219584 1.登录页面-标签部分准备

假设: 我们 提交到 版本库 三次,我们需要回退到第一次提交时【第一次 index.html】

  • 第一次:提交 html 页面【版本库:index.html】
  • 第二次:提交 css 样式【版本库:index.html、index.css】
  • 第三次:提交 js 文件【版本库:index.html、index.css、index.js】

现在情况:工作区和暂存区【index.html、index.css、index.js,可能你修改了工作区的文件,并提交到了 暂存区 ,但是没有提交到 版本库

1)git reset --soft 版本号(其他文件未跟踪)【回退到第一次】

使用这个命令,会把 版本库 的 【第一次:index.html】覆盖 工作区和暂存区 的【index.html】,但是,原本的【index.css、index.js】没有变

现在情况:工作区和暂存区【index.html(第一次提交的版本)、index.css、index.js】 

2)git reset --hard 版本号【回退到第一次】

使用这个命令,会把 版本库 的 【第一次:index.html】覆盖 工作区和暂存区 的【index.html】,但是,原本的【index.css、index.js】会被删除

现在情况:工作区和暂存区【index.html(第一次提交的版本)

如果第一次提交版本不满意,要恢复第三次的版本【查看完整的日志 :git reflog --oneline】查看第三次版本的版本号,然后 【git reset --hard 第三次提交的版本号】

3)git reset --mixed 版本号 (与 git reset 等价)【回退到第一次】

使用这个命令,会把 版本库 的 【第一次:index.html】覆盖 工作区和暂存区 的【index.html】,但是,工作区的【index.css、index.js】没有变,不过暂存区只有【index.html(第一次提交的版本)

现在情况:工作区和暂存区【index.html(第一次提交的版本)、index.css、index.js】

1、 git reset --soft 版本号

2、 git reset --hard 版本号

3、 git reset --mixed 版本号

4git reset --soft/hard/mixed 版本号  总结

 


  • 7、Git 忽略不需要的文件

无论文件写在 根目录下 哪里,都会被找到忽略 ,并且文件名变暗


  • 8、Git 分支

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

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

提示:如下图,我们创建 content分支 开发别的业务,但是我们还想修bug,不影响 content分支 ,这时,我们切换回到 master分支,再创建 login-bug分支 来修bug,这样互不影响了

1、创建分支命令:
    git branch 分支名

2、切换分支命令:
    git checkout 分支名

3、查看所有分支
    git branch

步骤:


  • 9、分支-合并与删除

1、切回到要合入的分支上:
    git checkout master

2、合并其他分支过来:
    git merge login-bug

3、删除合并后的分支指针:
    git branch -d login-bug


  • 10、分支-合并冲突

概念:不同分支中,对同一个文件的同一部分修改,Git 无法干净的合并,产生合并冲突

假设:

1、基于 master 新建 publish 分支,修改内容页面的 html 文件的 title 标签,并提交一次

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

解决冲突后,进行提交: 

 


  • 11、Git 远程仓库 

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

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

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

1、注册第三方托管平台网站账号

地址:工作台 - Gitee.com

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

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

1、本地 Git 仓库添加远程仓库原点地址
命令: git remote add 远程仓库别名 远程仓库地址
例如: git remote add origin https://gitee.com/xxx/work.git

2、本地 Git 仓库推送版本记录到远程仓库
命令: git push -u 远程仓库别名 本地和远程分支名
例如: git push -u origin master
完整写法:git push --set-upstream origin master:master


  • 12、Git 远程仓库-克隆 

  • 克隆:拷贝一个 Git 仓库到本地,进行使用
  • 命令:git clone 远程仓库地址,例如:git clone https://gitee.com/xxx/work.git
  • 效果:在运行命令所在文件夹,生成 work 项目文件夹(包含版本库,并映射到暂存区和工作区)
  • 注意1:Git 本地仓库已经建立好和远程仓库的链接
  • 注意2:仓库公开随意克隆,推送需要身为仓库团队成员 


  • 13、Git 多人协同开发

需求:小传新代码共享给小智

步骤:

小传开发代码 -> 工作区 -> 暂存区 -> 提交 -> 拉取(可选)-> 推送

小智 -> 拉取(后续也可以开发代码 -> ... -> 推送)

想要看到别人同步上去的最新内容:

    git pull origin master 

等价于下面两条命令相加:

    git fetch origin master:master(获取远程分支记录到本地,未合并)

    git merge origin/master (把远程分支记录合并到所在分支下)

  • 14、VSCode 中使用 Git

使用:源代码管理,进行暂存,撤销,对比差异,提交等操作 


  • 15、Git 常用命令 

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

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

相关文章

【视觉SLAM入门】7.4.后端优化 --- 基于位姿图和基于因子图

"议论平恕,无所向背” 1. 位姿图1.1 具体做法1.2 小结 2. 因子图2.1 具体做法2.1.1 贝叶斯网络2.1.2 因子图2.1.3 更具体的因子图2.1.4 增量的求解方法 引入: 上节BA将位姿和路标都作为优化的节点,H矩阵也告诉我们路标远大于位姿&#…

初识Mybatis(二)动态SQL、缓存和逆向工程

动态SQL Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题。 (比如多条件查询的设置,实现判空等) 1、if 创建DynamicSQLMapper接口,DynamicSQL…

C语言基础知识点(六)二维数组指针和地址

#include <stdio.h>int main() {int a[2][3] {2, 4, 6,8, 10, 12};printf("a:%p, a1:%p\n", a, a 1); // 相差3*sizeof&#xff08;int&#xff09;12&#xff0c;二维数组名是一个指向每一行的指针&#xff0c;a:0061FF08, a1:0061FF14prin…

Redis Part1

单体架构&#xff1a;一台Web服务器、一台数据库服务器。 1.了解NoSql 什么是Nosql&#xff1f; NoSQL&#xff0c;即Not-Only-SQL&#xff0c;意思就是我们干事情不能只用SQL&#xff0c;泛指非关系型的数据库&#xff01;NoSQL定位&#xff1a;作为关系型数据库的补充&am…

信息安全三级概述

信息安全三级概述

C语言之const

C语言之const const修饰全局变量 此时全局变量只能使用但是不能修改&#xff0c; 如果直接拿全局变量修改值&#xff0c;编译直接报错 如果使用全局变量的地址修改值&#xff0c;运行时程序异常结束 const修饰普通局部变量 可以读取变量的值 不能直接通过变量进行修改值&a…

开源库源码分析:Okhttp源码分析(一)

开源库源码分析&#xff1a;OkHttp源码分析 导言 接下来就要开始分析一些常用开源库的源码了&#xff0c;作为最常用的网络请求库&#xff0c;OkHttp以其强大的功能深受Android开发者的喜爱&#xff08;比如说我&#xff09;&#xff0c;还有对该库进行二次封装而成的热门库&a…

为何红黑树在B/B+树之上仍然占据重要地位?

为何红黑树在B/B树之上仍然占据重要地位&#xff1f; 引言二、红黑树和B/B树的基本原理2.1、红黑树的特点和性质2.2、B/B树的特点和性质2.3、红黑树和B/B树的比较 三、B/B树相对于红黑树的优势四、红黑树仍然占据重要地位的原因总结 博主简介 &#x1f4a1;一个热爱分享高性能服…

成都营运《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作

成都营运《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作

【深度学习】 Python 和 NumPy 系列教程(廿七):Matplotlib详解:3、多子图和布局:散点矩阵图(Scatter Matrix Plot)

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 3、多子图和布局 1. subplot()函数 2. subplots()函数 3. 散点矩阵图&#xff08;Scatter Matrix Plot&#xff09; 一、前言 Python是一种高级编程语言&#xff0c;由Guido van Rossum于…

2327. 知道秘密的人数;1722. 执行交换操作后的最小汉明距离;2537. 统计好子数组的数目

2327. 知道秘密的人数 核心思想&#xff1a;动态规划&#xff0c;每天的人可以分为三种&#xff0c;可分享秘密的人&#xff0c;不可分享秘密的人&#xff0c;忘记秘密的人。定义f[i]为第i天可分享秘密的人&#xff0c;那么第(idelay ,iforget)天&#xff0c;会增加f[i]个可分…

广州口腔医院种植牙-广东省爱牙工程公益种牙,获湾区群众点赞

广州种植牙价格表-自2017年成立以来,广东省爱牙工程一直坚持以公益惠民为宗旨、公益种牙为服务方向,针对群众普遍存在的口腔健康问题,开展形式多样的公益性口腔医疗惠民活动。 广州种植牙费用表-日前,广东省爱牙工程“种植牙惠民行动”第二十季已正式启动。据广东省爱牙工程官方…

DataGrip 2023 年下载、安装教程、亲测可用

文章目录 前言1. 下载2. 安装3、DataGrip 常用操作4 推荐阅读 前言 DataGrip 是 JetBrains 发布的多引擎数据库环境&#xff0c;支持 MySQL 和 PostgreSQL&#xff0c;Microsoft SQL Server 和 Oracle&#xff0c;Sybase&#xff0c;DB2&#xff0c;SQLite&#xff0c;还有 Hy…

窜货链接的有效治理流程

当商跨区域销售时&#xff0c;但产生了窜货&#xff0c;窜货的根本是因为低价&#xff0c;虽然品牌都会禁止经销商窜货销售&#xff0c;但为了获得更多利润&#xff0c;很多经销商还是会悄悄做着窜货销售的行为&#xff0c;而窜货不仅会破坏渠道的正常发展&#xff0c;同时还会…

第六章 图 十、关键路径

开始顶点&#xff08;源点)&#xff1a; 在AOE网中仅有一个入度为0的顶点&#xff0c;称为开始顶点&#xff08;源点)&#xff0c;它表示整个工程的开始; 结束顶点&#xff08;汇点)&#xff1a; 也仅有一个出度为0的顶点&#xff0c;称为结束顶点&#xff08;汇点)&#xf…

Postman应用——初步了解postman

Postman 是一个用于构建和使用 API 的 API 平台&#xff0c;Postman 简化了 API 生命周期的每个步骤并简化了协作&#xff0c;可以更快地创建更好的 API。 Postman 包含一个基于Node.js的强大的运行时&#xff0c;允许您向请求&#xff08;request&#xff09;和分组&#xff…

redis缓存穿透、击穿、雪崩介绍

缓存穿透 概念 缓存穿透指某一特定时间批量请求打进来并访问了缓存和数据库都没有的key&#xff0c;此时会直接穿透缓存直达数据库&#xff0c;从而造成数据库瞬时压力倍增导致响应速度下降甚至崩溃的风险&#xff1b; 解决方案 一、通过布隆过滤器解决 原理&#xff1a;将…

关于content-type的理解

一.content-type的结论 告诉后端传过去的数据是什么类型的数据 二.没有请求体 (1)没有请求体的情况下content-type没有意义。 (2):图示 里面是没有请求体的 (3)有请求体的情况 二.常见的三种方式 (1)application/x-www-form-urlencoded(默认) 参数的表现形式: 传递之前可以…

ESIM实战文本匹配

引言 今天我们来实现ESIM文本匹配&#xff0c;这是一个典型的交互型文本匹配方式&#xff0c;也是近期第一个测试集准确率超过80%的模型。 我们来看下是如何实现的。 模型架构 我们主要实现左边的ESIM网络。 从下往上看&#xff0c;分别是 输入编码层(Input Ecoding) 对前…

变压器寿命预测(python代码,Logistic Regression模型预测效果一般,可以做对比实验)

1.数据来源官网&#xff1a;Data for: Root cause analysis improved with machine learning for failure analysis in power transformers - Mendeley Data 点Download All 10kb即可下载数据 2.下载下来后是这样 每一列的介绍&#xff1a; Hydrogen 氢气&#xff1b; Oxyge…