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

[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.name
    • git 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 filegit 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&#xff0c;未commit3.已add&#xff0c;已commit 1.创建本地仓库 创建⼀个Git本地仓库&#xff1a;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&#xff08;&#xff09; 1.2end&#xff08;&#xff09; 1.3打印信息 1.4 reserve&#xff08;&#xff09; 1.5 size&#xff08;&#xff09; 1.6 capacity&#xff08;&#xff09; 1.7 push_back() 1.8[ ] 1.9 pop_back() 1.10 insert&…...

BERT模型

BERT模型是由谷歌团队于2019年提出的 Encoder-only 的 语言模型&#xff0c;发表于NLP顶会ACL上。原文题目为&#xff1a;《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》链接 在前大模型时代&#xff0c;BERT模型可以算是一个参数量比…...

举例说明计算机视觉(CV)技术的优势和挑战

计算机视觉&#xff08;CV&#xff09;技术是通过计算机模拟和处理图像与视频数据来模拟人类视觉的能力。它可以带来许多优势&#xff0c;也面临一些挑战。 优势&#xff1a; 自动化&#xff1a;CV技术可以自动处理大量的图像和视频数据&#xff0c;从而提高工作效率和准确性。…...

Animate软件基础:关于补间动画中的图层

Animate 文档中的每一个场景都可以包含任意数量的时间轴图层。使用图层和图层文件夹可组织动画序列的内容和分隔动画对象。在图层和文件夹中组织它们可防止它们在重叠时相互擦除、连接或分段。若要创建一次包含多个元件或文本字段的补间移动的动画&#xff0c;请将每个对象放置…...

mac|安装hashcat(压缩包密码p解)

一、安装Macports&#xff08;如果有brew就不用这一步&#xff09; 根据官网文档&#xff1a;The MacPorts Project -- Download & Installation&#xff0c;安装步骤如下 1、下载MacPorts&#xff0c;这里我用的是tar.gz &#xff0c;可以通过keka&#xff08;keka安装在…...

【保姆级系列:锐捷模拟器的下载安装使用全套教程】

保姆级系列&#xff1a;锐捷模拟器的下载安装使用全套教程 1.介绍2.下载3.安装4.实践教程5.验证 1.介绍 锐捷目前可以通过EVE-NG来模拟自己家的路由器&#xff0c;交换机&#xff0c;防火墙。实现方式是把自己家的镜像导入到EVE-ng里面来运行。下面主要就是介绍如何下载镜像和…...

virtualbox7安装centos7.9配置静态ip

1.背景 我大概在一年之前安装virtualbox7centos7.9的环境&#xff0c;但看视频说用vagrant启动的窗口可以不用第三方工具(比如xshell、secure等)连接centos7.9&#xff0c;于是尝鲜试了下还可以&#xff0c;导致系统文件格式是vmdk了&#xff08;网上有vmdk转vdi的方法&#xf…...

结构型设计模式:桥接/组合/装饰/外观/享元

结构型设计模式&#xff1a;适配器/代理 (qq.com)...

vLLM初识(一)

vLLM初识&#xff08;一&#xff09; 前言 在LLM推理优化——KV Cache篇&#xff08;百倍提速&#xff09;中&#xff0c;我们已经介绍了KV Cache技术的原理&#xff0c;从中我们可以知道&#xff0c;KV Cache本质是空间换时间的技术&#xff0c;对于大型模型和长序列&#xf…...

【Apache Doris】周FAQ集锦:第 18 期

【Apache Doris】周FAQ集锦&#xff1a;第 18 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户…...

docker部署可执行的jar

1.将项目打包&#xff0c;上传到服务器的指定目录 2.在该目录下创建Dockerfile文件 3.Dockerfile写入如下指令 # 基于哪个镜像 FROM java:8 # 拷贝文件到容器&#xff0c;也可以直接写成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: 输入图像&#xff0c;即要进行颜色空间转换的原始图像。code: 转换代码&#xff0c;指定要执行的颜色空间转换类型。这是一个必需的参数&#xff0c;决定了源颜色空间到目标颜色空间的转换方式。dst…...

java面向对象期末总结

子类父类方法执行顺序&#xff1f;多态中和子类打印不一样&#xff1b; 子类在实现父类方法的时候没有用super关键字进行调用也会先执行父类的构造方法吗&#xff1f; 是的&#xff0c;当子类实例化时&#xff0c;先执行父类的构造方法&#xff0c;再执行子类的构造方法。即使在…...

文件搜索 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…...

基于深度学习的面部表情分类识别系统

&#xff1a;温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 面部表情识别是计算机视觉领域的一个重要研究方向&#xff0c; 它在人机交互、心理健康评估、安全监控等领域具有广泛的应用。近年来&#xff0c;随着深度学习技术的快速发展&#xf…...

日志远程同步实验

目录 一.实验环境 二.实验配置 1.node1发送方配置 &#xff08;1&#xff09;node1写udp协议 &#xff08;2&#xff09;重启服务并清空日志 2.node2接收方配置 &#xff08;1&#xff09;node2打开接受日志的插件&#xff0c;指定插件用的端口 &#xff08;2&#xff…...

数据结构之《二叉树》(中)

在数据结构之《二叉树》(上)中学习了树的相关概念&#xff0c;还了解的树中的二叉树的顺序结构和链式结构&#xff0c;在本篇中我们将重点学习二叉树中的堆的相关概念与性质&#xff0c;同时试着实现堆中的相关方法&#xff0c;一起加油吧&#xff01; 1.实现顺序结构二叉树 在…...

< 12 > Linux进程:进程虚拟地址空间机制 —— 内存管理的美学

1. 程序地址空间回顾C语言阶段学习过程序地址空间&#xff0c;长这样代码段&#xff0c;数据段&#xff1a;这些是常量区&#xff0c;栈区&#xff0c;堆区&#xff0c;还有一些系统需要的空间这些是内存吗&#xff1f; ——不是内存。这些都是虚拟地址空间&#xff0c;OS给我们…...

Python性能优化利器:Numba JIT编译器原理与实战指南

1. 项目概述&#xff1a;当Python遇上极致性能如果你用Python做过科学计算、数据分析或者机器学习&#xff0c;大概率经历过这样的场景&#xff1a;一个复杂的数值计算循环&#xff0c;逻辑清晰&#xff0c;但运行起来却慢得让人怀疑人生。你看着CPU占用率上不去&#xff0c;心…...

Wingman:基于模板化与自动化的现代项目脚手架工具实践

1. 项目概述&#xff1a;一个为开发者量身定制的“僚机”在软件开发的世界里&#xff0c;我们常常需要处理一些重复、琐碎但又至关重要的任务&#xff1a;比如为新项目搭建一个结构清晰、配置完善的脚手架&#xff1b;或者在接手一个老项目时&#xff0c;快速理解其依赖、脚本和…...

ChatGPT对话转Anki闪卡:自动化工具实现与Python技术解析

1. 项目概述&#xff1a;从ChatGPT对话到Anki卡片的自动化桥梁最近在整理学习资料时&#xff0c;我发现了一个效率痛点&#xff1a;和ChatGPT的对话里常常藏着不少“金句”或知识点&#xff0c;但想把它们变成可以随时复习的Anki卡片&#xff0c;过程却相当繁琐。复制、粘贴、手…...

手把手教你用LabelImg标注自己的数据集:从哆啦A梦到实战项目的YOLOv5训练准备

从哆啦A梦到工业级应用&#xff1a;LabelImg数据标注与YOLOv5训练全流程实战 在计算机视觉领域&#xff0c;数据标注的质量往往决定了模型性能的上限。就像建筑需要坚实的地基一样&#xff0c;一个优秀的YOLOv5模型离不开精心准备的数据集。本文将带您从零开始&#xff0c;通过…...

测试Leader的进阶困境:从管事到管人,再到管战略

在软件测试领域&#xff0c;从一名优秀的测试工程师晋升为测试Leader&#xff0c;往往被视为职业生涯的一次重要跃迁。然而&#xff0c;这场跃迁并非终点&#xff0c;而是一段更为复杂、充满挑战的旅程的开端。许多新晋测试Leader很快就会发现&#xff0c;自己陷入了一种前所未…...

代码评审可视化图谱:从Diff到Graph的工程实践与实现

1. 项目概述&#xff1a;当代码评审遇上可视化图谱在团队协作开发中&#xff0c;代码评审&#xff08;Code Review&#xff09;是保障代码质量、促进知识共享的关键环节。然而&#xff0c;传统的代码评审流程&#xff0c;尤其是在处理大型、复杂的变更集&#xff08;Change Set…...

别再叫我白板了:从一个知识整理的真实痛点,聊产品定位的边界

在效率工具这个赛道上&#xff0c;“白板”已经成为一个拥挤的品类。如果我们只是想做一块更好看、更流畅的在线白板&#xff0c;那说实话&#xff0c;意义不大。市面上已经有足够多的成熟产品&#xff0c;把“无限画布自由表达”这件事做到了很高的水准。但我们在开发和用户调…...

被攻击了怎么办?

高防IP&#xff0c;主要是针对互联网业务服务器&#xff0c;遭遇海量恶意流量冲击、导致网站和游戏业务瘫痪无法访问时&#xff0c;推出的专业防护增值服务。接入高防IP后&#xff0c;会把所有外部访问流量先统一引流至高防节点&#xff0c;恶意攻击流量会在这里直接拦截清洗过…...

【光学】基于菲涅尔光谱和角光谱ASPSAP模拟聚焦高斯光束传播附Matlab代码

​✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。&#x1f34e;完整代码获取 定制创新 论文复现点击&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1…...