[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.实现顺序结构二叉树 在…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
