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

【Git】P1 Git 基础

Git 基础

  • Git 基本概念
    • 集中式版本控制工具 与 分布式版本控制工具
    • Git 下载与安装
    • Bash 初始设置
    • 创建本地仓库
    • Git 三区概念
  • 一个简单的提交流程
  • 更改文件后再次提交
  • git 实现版本切换
    • 查看提交日志
    • 设置 git 快捷键
    • 版本切换(一)
    • 版本切换(二)
  • 同文件夹下只想让部分文件 git 管理


千里之行,始于足下

Git 学习目标:

  1. git 基本概念
  2. git 工作流程
  3. git 常用命令
  4. git 代码托管
  5. idea 操作 git

Git 基本概念

git 的实际使用场景,为什么用 git?

  1. 防止电脑嘎嘣脆,啥啥都没了;
  2. 代码版本控制,突然发现错了好几个版本,咱还能恢复到之前的之前的之前的版本;代码回滚与还原;
  3. 协同开发,多个人同时维护同一个项目;
  4. 代码追溯,通过线上日志找到什么时候出的错

集中式版本控制工具 与 分布式版本控制工具

集中式版本控制工具:

版本库是存放在中央服务器,每个人工作时候必须联网,从中央服务器下载代码,修改后上传到中央服务器,提交到中央版本库。比如 SVNCVS,但是已经比较过时;

分布式版本控制工具:

每个人的电脑都是一个完整的版本库,工作时候无需联网,多人协作只需要各自的修改推给对方,就可以看到对方的修改了。比如 Git

虽然 git 也有共享版本库,但是 git 由于每个人的电脑都包含完整的版本库,所以不怕中央挂掉,挂了从任何一个电脑上上传即可。


Git 下载与安装

下载网址:https://git-scm.com/download/win

安装注意事项:(没有提到直接默认 next 即可)

选择英文地址:

在这里插入图片描述

给桌面加个图标:

在这里插入图片描述
默认 vim, 有关 vim 操作博文:https://blog.csdn.net/weixin_43098506/article/details/129336983

在这里插入图片描述

主干名,默认其为 master

默认选择第二个,第一个是只从 git bash 进入 git,第二个是可以从 bash 以及 第三方软件进入;

在这里插入图片描述

默认选择 ssh可执行文件,默认选择 https 传输后端,配置行尾转换,配置终端模拟器,全部默认;

恭喜安装完成!!!

推荐安装介绍博客:
https://www.cnblogs.com/kevinzhushrek/p/16092144.html


Bash 初始设置

Git GUI:Git 提供的图形界面工具;
Git Bash:Git提供的命令行工具;

安装完成后最重要一步是设置邮箱以及用户名;

打开 git bash,设置自己用户名以及邮箱

git config --global user.name "XU Hongduo"
git config --global user.email "xxxxxxx@hotmail.com"

检查自己设置好的用户名以及邮箱

git config --global user.name
git config --global user.email

创建本地仓库

自定义一个文件夹下,右键新建文件夹,命名英文,然后右键 Git Bash here,执行指令:

git init

在这里插入图片描述


Git 三区概念

在 Git 中,有三区概念,工作区,暂存区以及仓库。

工作区: 新创建未加到仓库中的文件;已加到仓库但是修改了没提交的文件;
暂存区: 提交到仓库之前的缓存区,工作区的文件通过 add 指令;
仓库: 进行版本控制的文件目录;

图片来源于黑马,仅用于学习


一个简单的提交流程

首先从工作区提交到暂存区

git add "test.txt"

可以查看状态

git status

在这里插入图片描述

然后从暂存区提交到仓库

git commit -m "first submit"
# first submit 为注释内容

再次查看状态

git status

在这里插入图片描述


更改文件后再次提交

对上述已提交的 test.txt 文件做更改,执行 status 查看状态

git status

在这里插入图片描述

重新提交并上传

git add .
git commit -m "second submit"

在这里插入图片描述
P.S. 少个 -m 里 t…


git 实现版本切换

查看提交日志

当一个文件多次提交后,可以查看日志

git log
git log --pretty=oneline
# 将提交的信息显示为一行
git log --pretty=oneline --abbrev-commit
# 将提交的信息显示为一行
# 使得输出的 commitId 更简短
git log --pretty=oneline --abbrev-commit --all
# 将提交的信息显示为一行
# 使得输出的 commitId 更简短
# 显示所有分支
git log --pretty=oneline --abbrev-commit --all --graph
# 将提交的信息显示为一行
# 使得输出的 commitId 更简短
# 显示所有分支
# 以图的形式显示(该图非图片,而是结构)

在这里插入图片描述

插播:最后一条指令太过于冗长,我们可以通过设置快捷键设置自创一条指令。


设置 git 快捷键

在用户目录下创建 .bashrc 文件,所谓用户目录,对于我的电脑为 C:\Users\xhong

touch .bashrc

打开 .bashrc 文件,然后配置日志 log 快捷键 以及 ll 快捷键

alias git-log="git log --pretty=oneline --abbrev-commit --all --graph"alias ll="ls -al"

在这里插入图片描述

保存退出,配置完成!!!


版本切换(一)

首先查看所有提交 log id

git log --pretty=oneline --abbrev-commit --all --graph
# 未设置快捷键
git-log
# 设置了快捷键

在这里插入图片描述

然后执行回退版本指令

git reset --hard beb4c4c

在这里插入图片描述

注意 beb4c4c 是我的一次 submit -m 的 id

再次查看文件,发现已经回滚到之前只有一行内容的情况。


版本切换(二)

如果我想回到回滚前的版本,但是 log 已经看不到回滚前的版本号了,怎么办?

git reflog

可以查看回滚记录,从而找回那个版本号

再次版本切换到回滚前的就可以

git reset --hard b133242

在这里插入图片描述

再次查看内容,发现又回到了两行的内容。


同文件夹下只想让部分文件 git 管理

问题描述

如果一个文件夹下我只有部分文件想通过 git 进行管理,该如何做???

案例解析

首先我们先初始化一个目录,然后创建两个文件 test.txt 以及 test1.a,

git init
touch test.txt
touch test1.a

我们首先查看有哪些文件被 git 管理

git status

在这里插入图片描述

我希望通过 git 对 test.txt 进行管理,而不对 test1.a 进行管理;

首先我们创建一个名为 .gitignore 的文件,用于记录当前文件夹中不被管理的文件名称;

touch .gitignore

通过 vim 打开.gitignore 文件

vim .gitignore

将不希望被 git 管理的文件名 test1.a 添加到 .gitignore 中

在这里插入图片描述

然后我们能再执行查看 git 状态命令,可以发现 test1.a 文件已经不被管理

在这里插入图片描述


下一节:
链接:

相关文章:

【Git】P1 Git 基础

Git 基础Git 基本概念集中式版本控制工具 与 分布式版本控制工具Git 下载与安装Bash 初始设置创建本地仓库Git 三区概念一个简单的提交流程更改文件后再次提交git 实现版本切换查看提交日志设置 git 快捷键版本切换(一)版本切换(二&#xff0…...

智能交通数据集Rope3D(仅限科研使用)

Rope3D Dataset 官网:https://thudair.baai.ac.cn/index !!!如想要使用Rope3D数据集进行2D检测,最后有我们处理完的数据集链接。 !!! 介绍: DAIR-V2X数据集是首个用于…...

Java虚拟机JVM-面试题

1、Java 虚拟机是如何捕获异常的? 答: 在编译生成的字节码中,每个方法都附带一个异常表。异常表中的每一个条目代表一个异常处理器,并且由 from 指针、to 指针、target 指针以及所捕获的异常类型构成。这些指针的值是字节码索引…...

详细的说说Redis的数据类型

Redis是一个开源的内存数据库,它可以用作缓存、消息代理、实时数据处理和许多其他用途。Redis是一个key-value存储系统,其中数据存储在内存中,并通过网络进行访问。与传统的关系型数据库不同,Redis支持多种数据结构,包…...

798.差分矩阵

输入一个 n行 m列的整数矩阵,再输入 q个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1)和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上 c。 请你将进行完所有操作后的矩阵输出…...

InfluxDB 2 介绍与使用 flux查询 数据可视化

一、关键概念 相比V1 移除了database 和 RP,增加了bucket。 V2具有以下几个概念: timestamp、field key、field value、field set、tag key、tag value、tag set、measurement、series、point、bucket、bucket schema、organization 新增的概念&…...

Qt QTreeView简单使用

QT-QTreeView使用方法 QTreeView: 用于显示树状结构数据,适用于树状结构数据的操作。 一、初始化 ​ 利用QStandardlternModel来初始化数据,标准的基于项数据的数据模型类, 每个项数据可以是任何数据类型。 // 初始化model QStandardItem…...

Wannacrypt蠕虫老树开花?又见Wannacrypt

Wannacrypt蠕虫是一个在2017年就出现的远古毒株,其利用永恒之蓝漏洞降维打击用户服务器,而后进行扩散勒索,曾经一度风靡全球,可谓是闻者伤心,听着落泪,因为这玩意解密是不可能 解密的。 而2023年的今天&am…...

结合基于规则和机器学习的方法构建强大的混合系统

经过这些年的发展,我们都确信ML即使不能表现得更好,至少也可以在几乎所有地方与前ML时代的解决方案相匹配。比如说一些规则约束,我们都会想到能否把它们替换为基于树的ml模型。但是世界并不总是黑白分明的,虽然机器学习在解决问题…...

Spring Security OAuth2实现多用户类型认证、刷新Token

原本的OAuth2登录支持用户名密码登录,现在还想支持另外用id号码和密码登录。但是OAuth2默认提供的UserDetailsService只允许传入一个参数:想要实现多种用户登录,是不是可以考虑loadUserByUsername方法携带多个参数呢?接下来记录一…...

云计算介绍,让你更了解云计算

同学们好! 第一次接触IT行业吗?没关系,看完这篇文章肯定会让你不再陌生。给自己几分钟时间,认真看完哦! 1、不知道什么是云计算? 网络计算云计算 官方定义是:通过网络提供可伸缩的分布式计算…...

阿里大佬翻遍全网Java面试文章,总结出这份1658页文档,GitHub收获25K+点赞

就目前大环境来看,跳槽成功的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验Java程序员的技术功底。这不又到了面试跳槽的黄金段,成功升职加薪,不成功饱受打击。当然也要注意&…...

【JDK1.8 新特性】Lambda表达式

1. 什么是Lambda表达式? Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达…...

【Vue.js】Vuex核心概念

文章目录全局状态管理模式Vuexvuex是什么?什么是“状态管理模式”?vuex的应用场景Vuex安装开始核心概念一、State1、单一状态树2、在 Vue 组件中获得 Vuex 状态3、mapState辅助函数二、Getter三、Mutation1、提交载荷(Payload)2、…...

react router零基础使用教程

安装既然学习 react router 就免不了运行 react安装 reactnpx create-react-app my-appcd my-appnpm start安装 react routernpm install react-router-dom如果一切正常,就让我们打开 index.js 文件。配置路由引入 react-router-dom 的 RouterProviderimport {Route…...

IOC三种依赖注入的方式,以及区别

目录构造方法注入(constructor injection)setter 方法注入(setter injection)接口注入(interface injection)三种方式比较构造方法注入(constructor injection) 构造方法中声明依赖…...

Ubuntu18安装新版本PCL-1.13,并和ROS自带PCL-1.8共存

文章目录1.安装新版本PCL-1.132.在工程中使用新版本的PCL-1.133.pcl-1.13误装到/usr/local/下如何卸载1.安装新版本PCL-1.13 下载PCL-1.13代码: 修改CMakeLists.txt文件,不编译vtk相关的代码:vtk的问题比较难解决,但是一般我们安…...

计算机图形学08:中点BH算法绘制抛物线(100x = y^2)

作者:非妃是公主 专栏:《计算机图形学》 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录专栏推荐专栏系列文章序一、算法原理二、…...

基于java的高校辅导员工作管理系统

摘 要网络技术的快速发展给各行各业带来了很大的突破,也给各行各业提供了一种新的管理模块,对于高校辅导员工作管理将是又一个传统管理到智能化信息管理的改革,设计高校辅导员工作管理系统的目的就是借助计算机让复杂的班级信息、学籍信息等管…...

字节3次都没裁掉的7年老测试。掌握设计业务与技术方案,打开上升通道!

前言职场中的那些魔幻操作,研发最烦的是哪个?“面对业务需求的时候,可能都听过这样一句话:这个很简单,直接开发,三天内上线;”朋友说:“产品听了流泪,测试见了崩溃&#…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

【JavaEE】-- HTTP

1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...