[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.实现顺序结构二叉树 在…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
