[Git][基本操作]详细讲解
目录
- 1.创建本地仓库
- 2.配置 Git
- 3.添加文件
- 1.添加文件
- 2.提交文件
- 3.其他 && 说明
- 4.删除文件
- 5.跟踪修改文件
- 6.版本回退
- 7.撤销修改
- 0.前言
- 1.未add
- 2.已add,未commit
- 3.已add,已commit
1.创建本地仓库
- 创建⼀个Git本地仓库:
git init - 运行该命令后,会在当前目录下多出一个
.git的隐藏目录 .git目录是Git用来跟踪管理仓库的,不要手动修改这个目录里面的文件- 如果改乱了,该Git仓库就被破坏了
2.配置 Git
- 安装Git后⾸先要做的事情是设置⽤⼾名称和Email地址
git config [--global] user.name "Your Name"git config [--global] user.email "email@example.com"--global是一个可选项,表⽰这台机器上所有的Git仓库都会使⽤这个配置
- 查看配置:
git config -l - 删除对应的配置:
git config [--global] --unset user.namegit config [--global] --unset user.email
3.添加文件
1.添加文件
- 添加⼀个或多个⽂件到暂存区:
git add [file1] [file2] ... - 添加某个目录下的所有⽂件改动到暂存区:
git add [dir] - 添加当前⽬录下的所有⽂件改动到暂存区:
git add .
2.提交文件
- 提交暂存区全部内容到本地仓库中:
git commit -m "message" - 提交暂存区的指定⽂件到仓库区:
git commit [file1] [file2] ... -m "message" - 注意:
git commit后⾯的-m选项,要跟上描述本次提交的message,且不能省略- 该描述用来记录提交细节,是给人看的,所以要好好描述
3.其他 && 说明
- 查看历史提交记录:
git log- 如果觉得信息太多,可以加上
--pretty=oneline参数
- 如果觉得信息太多,可以加上
- 类似
7a535a4f3e6dba8a8dbcea9d7e3ee3c395aeabf3,是每次提交的commit id(版本号)- 不是单纯的数字,而是由
SHA1计算出来的十六进制数
- 不是单纯的数字,而是由
4.删除文件
- 方法一:
- 先在工作区中删除该文件:
rm file - 添加工作区中该文件的修改:
git add file - 提交修改:
git commit
- 先在工作区中删除该文件:
- 方法二:
- 直接删除并添加修改:
git rm file- 相当于将
rm file和git add file合并为了一步
- 相当于将
- 提交修改:
git commit
- 直接删除并添加修改:
5.跟踪修改文件
- Git跟踪并管理的是修改,⽽⾮⽂件
- 查看当前仓库的状态:
git status$ git status On branch master Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified: 233.txtno changes added to commit (use "git add" and/or "git commit -a") - 显⽰暂存区和⼯作区⽂件的差异:
git diff [file]$ git diff diff --git a/233.txt b/233.txt index 99a6aad..80c8ca9 100644 --- a/233.txt +++ b/233.txt @@ -1 +1,2 @@SnowK +DieSnowK - 查看版本库和⼯作区⽂件的区别:
git diff HEAD -- [file]
6.版本回退
- 版本回退:
git reset,本质是将版本库中的内容进⾏回退,⼯作区或暂存区是否回退由命令参数决定 - 语法格式:
git reset [--soft | --mixed | --hard] [HEAD]--mixed:将暂存区和版本库的内容回退到指定版本,工作区的内容不变- 默认选项,使用时可以不带此参数
--soft:将版本库的内容回退到指定版本,工作区和暂存区的内容不变--hard:将工作区、暂存区、版本库的内容都回退到指定版本- 慎用,特别是当前工作区还有未提交的代码时
- 因为工作区回滚,未提交的代码就再也找不回来了
[HEAD]说明:可直接写成commit id/SHA1,表⽰指定退回的版本- 也可以写成如下形式
HEAD表⽰当前版本HEAD^上⼀个版本HEAD^^上上⼀个版本- 以此类推…
- 还可以使用
~数字表示- HEAD~0表⽰当前版本
- HEAD~1上⼀个版本
- HEAD~2上上⼀个版本
- 也可以写成如下形式
- 如果回退到一个版本后悔了,想再倒回去,该怎么办?
- 可以继续使用
git reset命令,直接使用之前拿到的git log中的commit id即可
- 可以继续使用
- 如果连
git log中的commit id也找不到了,该怎么办?- 使用
git reflog补救,该命令用来记录本地的每一次命令 git reflog拿到的是一个很简短的哈希值,但是凭借哈希值,也可以回退到特定版本- 该简短的哈希值是
commit id的部分 - 即:可以使用部分
commit id来表示目标版本
- 该简短的哈希值是
$ git reflog 1320449 (HEAD -> master) HEAD@{0}: reset: moving to 13204498006394d6067fbc8b6046885c6e5e9649 7a535a4 HEAD@{1}: reset: moving to HEAD^^ 1320449 (HEAD -> master) HEAD@{2}: commit: 233.txt add DieSnowK d74fd33 HEAD@{3}: commit: 666.txt 7a535a4 HEAD@{4}: commit (initial): First Commit$ git reset --hard 7a535a4 HEAD is now at 7a535a4 First Commit$ git log commit 7a535a4f3e6dba8a8dbcea9d7e3ee3c395aeabf3 (HEAD -> master) Author: DieSnowK <1752351098@qq.com> Date: Tue Jul 23 14:30:39 2024 +0800First Commit - 使用
- 但是如果由于长时间开发,导致
commit id早就找不到了,此时再想回退倒该版本,貌似就不可能了:P - 说明:Git的版本回退速度⾮常快的原因
-
Git在内部有个指向当前分⽀(此处是
master)的HEAD指针refs/heads/master⽂件⾥保存当前master分⽀的最新commit id
-
在回退版本的时候,Git仅仅是给
refs/heads/master中存储了一个特定的commit id
-
7.撤销修改
0.前言
- 撤销修改一般会遇到三种情况
- ⼯作区的代码,还没有
add:只有工作区有当前代码 - 已经
add,但还未commit:只有工作区和暂存区有当前代码 - 已经
add,并且commit:工作区、暂存区、版本库都有当前代码
- ⼯作区的代码,还没有
- 首先要明确:撤销的目的,其实是为了不影响远端仓库的代码
1.未add
- 手动撤销:大眼瞪小眼,一个个盯着对比,然后删除
- 非常容易出错,及其不推荐
- 让工作区回到该版本的最初状态:
git checkout -- [filename]- 注意:
--不能丢,丢了就是其他含义了
- 注意:
2.已add,未commit
- 此时可以先
git reset --mixed [HEAD],将暂存区的内容回退到指定的版本- 此处,可以将暂存区回退到该版本最初始的状态
- 然后就与情况一相同了,相当于是未
add的情况- 此时执行
git checkout -- [filename]即可
- 此时执行
3.已add,已commit
- 前置条件:
commit后没有push到远端仓库 - 直接回退到上一个版本即可:
git reset --hard HEAD^
相关文章:
[Git][基本操作]详细讲解
目录 1.创建本地仓库2.配置 Git3.添加文件1.添加文件2.提交文件3.其他 && 说明 4.删除文件5.跟踪修改文件6.版本回退7.撤销修改0.前言1.未add2.已add,未commit3.已add,已commit 1.创建本地仓库 创建⼀个Git本地仓库:git init运行该命…...
springMVC中从Excel文件中导入导出数据
目录 1. 数据库展示2. 导入依赖3. 写方法3.1 导入数据3.2 导出数据 4. 效果5. 不足6. 参考链接 1. 数据库展示 2. 导入依赖 pom.xml <!--文件上传处理--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId>&…...
C++的STL简介(三)
目录 1.vector的模拟实现 1.1begin() 1.2end() 1.3打印信息 1.4 reserve() 1.5 size() 1.6 capacity() 1.7 push_back() 1.8[ ] 1.9 pop_back() 1.10 insert&…...
BERT模型
BERT模型是由谷歌团队于2019年提出的 Encoder-only 的 语言模型,发表于NLP顶会ACL上。原文题目为:《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》链接 在前大模型时代,BERT模型可以算是一个参数量比…...
举例说明计算机视觉(CV)技术的优势和挑战
计算机视觉(CV)技术是通过计算机模拟和处理图像与视频数据来模拟人类视觉的能力。它可以带来许多优势,也面临一些挑战。 优势: 自动化:CV技术可以自动处理大量的图像和视频数据,从而提高工作效率和准确性。…...
Animate软件基础:关于补间动画中的图层
Animate 文档中的每一个场景都可以包含任意数量的时间轴图层。使用图层和图层文件夹可组织动画序列的内容和分隔动画对象。在图层和文件夹中组织它们可防止它们在重叠时相互擦除、连接或分段。若要创建一次包含多个元件或文本字段的补间移动的动画,请将每个对象放置…...
mac|安装hashcat(压缩包密码p解)
一、安装Macports(如果有brew就不用这一步) 根据官网文档:The MacPorts Project -- Download & Installation,安装步骤如下 1、下载MacPorts,这里我用的是tar.gz ,可以通过keka(keka安装在…...
【保姆级系列:锐捷模拟器的下载安装使用全套教程】
保姆级系列:锐捷模拟器的下载安装使用全套教程 1.介绍2.下载3.安装4.实践教程5.验证 1.介绍 锐捷目前可以通过EVE-NG来模拟自己家的路由器,交换机,防火墙。实现方式是把自己家的镜像导入到EVE-ng里面来运行。下面主要就是介绍如何下载镜像和…...
virtualbox7安装centos7.9配置静态ip
1.背景 我大概在一年之前安装virtualbox7centos7.9的环境,但看视频说用vagrant启动的窗口可以不用第三方工具(比如xshell、secure等)连接centos7.9,于是尝鲜试了下还可以,导致系统文件格式是vmdk了(网上有vmdk转vdi的方法…...
结构型设计模式:桥接/组合/装饰/外观/享元
结构型设计模式:适配器/代理 (qq.com)...
vLLM初识(一)
vLLM初识(一) 前言 在LLM推理优化——KV Cache篇(百倍提速)中,我们已经介绍了KV Cache技术的原理,从中我们可以知道,KV Cache本质是空间换时间的技术,对于大型模型和长序列…...
【Apache Doris】周FAQ集锦:第 18 期
【Apache Doris】周FAQ集锦:第 18 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户…...
docker部署可执行的jar
1.将项目打包,上传到服务器的指定目录 2.在该目录下创建Dockerfile文件 3.Dockerfile写入如下指令 # 基于哪个镜像 FROM java:8 # 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar ADD springboot-file-0.0.1.jar file.jar RUN bash -c touch /…...
OpenCV||超详细的图像处理模块
一、颜色变换cvtColor dst cv2.cvtColor(src, code[, dstCn[, dst]]) src: 输入图像,即要进行颜色空间转换的原始图像。code: 转换代码,指定要执行的颜色空间转换类型。这是一个必需的参数,决定了源颜色空间到目标颜色空间的转换方式。dst…...
java面向对象期末总结
子类父类方法执行顺序?多态中和子类打印不一样; 子类在实现父类方法的时候没有用super关键字进行调用也会先执行父类的构造方法吗? 是的,当子类实例化时,先执行父类的构造方法,再执行子类的构造方法。即使在…...
文件搜索 36
删除文件 文件搜索 package File;import java.io.File;public class file3 {public static void main(String[] args) {search(new File("D :/"), "qq");}/*** 去目录搜索文件* param dir 目录* param filename 要搜索的文件名称*/public static void sear…...
IO多路转接
文章目录 五种IO模型fcntl多路转接selectpollepollepoll的工作模式 五种IO模型 阻塞IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方式.阻塞IO是最常见的IO模型。非阻塞IO: 如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EWOULD…...
基于深度学习的面部表情分类识别系统
:温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 面部表情识别是计算机视觉领域的一个重要研究方向, 它在人机交互、心理健康评估、安全监控等领域具有广泛的应用。近年来,随着深度学习技术的快速发展…...
日志远程同步实验
目录 一.实验环境 二.实验配置 1.node1发送方配置 (1)node1写udp协议 (2)重启服务并清空日志 2.node2接收方配置 (1)node2打开接受日志的插件,指定插件用的端口 (2ÿ…...
数据结构之《二叉树》(中)
在数据结构之《二叉树》(上)中学习了树的相关概念,还了解的树中的二叉树的顺序结构和链式结构,在本篇中我们将重点学习二叉树中的堆的相关概念与性质,同时试着实现堆中的相关方法,一起加油吧! 1.实现顺序结构二叉树 在…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
