当前位置: 首页 > 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.实现顺序结构二叉树 在…...

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

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

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生&#xff0c;系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler&#xff0c;它是Thread的子类&#xff08;就是package java.lang;里线程的Thread&#xff09;。本文将利用它将设备信息、报错信息以及错误的发生时间都…...