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

CLIP图文匹配测试工具实战:上传商品图,自动匹配最佳描述文案

CLIP图文匹配测试工具实战&#xff1a;上传商品图&#xff0c;自动匹配最佳描述文案 1. 工具价值与核心功能 电商运营每天都要处理大量商品图片与文案的匹配工作&#xff0c;传统人工筛选效率低下且容易出错。这款基于CLIP-GmP-ViT-L-14模型的图文匹配测试工具&#xff0c;正…...

从芯片缺陷检测到遥感影像:Rotation RetinaNet的跨界实战指南

从芯片缺陷检测到遥感影像&#xff1a;Rotation RetinaNet的跨界实战指南 在工业质检和遥感影像分析领域&#xff0c;目标检测技术正面临从"能检测"到"精准检测"的升级挑战。传统水平框检测在面对芯片引脚缺失、卫星图像中密集停泊的舰船等场景时&#xff…...

UG CAM API 获取、设置切削层中的切削方式类型方法,如设置仅底面、恒定、临界深度的类型

/*这里operTag为一个工序操作&#xff0c;可以是已经创建好的操作&#xff0c;也可以是新创建的操作。获取或设置切削层的类型方式&#xff0c;使用 UF_PARAM_CUTLEV_METHOD&#xff0c;具体查看以下代码 */ tag_t operTag; //这里请根据你的功能需求获得operTag//获取切削层中…...

Solana机器人风险管理指南:止损、止盈与资金管理的10个关键技巧

Solana机器人风险管理指南&#xff1a;止损、止盈与资金管理的10个关键技巧 【免费下载链接】legacy-cc The earliest versions of the very first c compiler known to exist in the wild written by the late legend himself dmr. 项目地址: https://gitcode.com/gh_mirro…...

如何用AI实现专业级歌声转换?3大核心步骤+5个避坑指南

如何用AI实现专业级歌声转换&#xff1f;3大核心步骤5个避坑指南 【免费下载链接】diff-svc Singing Voice Conversion via diffusion model 项目地址: https://gitcode.com/gh_mirrors/di/diff-svc AI歌声转换技术正逐渐成为音乐创作和音频处理领域的新宠。Diff-SVC作为…...

模糊截图变高清?Super Resolution真实应用案例分享

模糊截图变高清&#xff1f;Super Resolution真实应用案例分享 1. 项目简介 你有没有遇到过这样的情况&#xff1a;找到一张很有意义的旧照片&#xff0c;但画质模糊看不清细节&#xff1b;或者从网上下载的图片分辨率太低&#xff0c;放大后全是马赛克。传统的图片放大方法往…...

LiuJuan20260223Zimage赋能微信小程序:智能对话功能快速实现

LiuJuan20260223Zimage赋能微信小程序&#xff1a;智能对话功能快速实现 最近在捣鼓一个微信小程序项目&#xff0c;想给它加个“聪明的大脑”&#xff0c;让用户能和它像朋友一样聊天。找了一圈方案&#xff0c;要么太复杂&#xff0c;要么效果不理想。直到我试了试这个叫Liu…...

用丹青幻境做汉服设计:轻松生成唐代齐胸襦裙、宋代褙子等各朝代服饰

用丹青幻境做汉服设计&#xff1a;轻松生成唐代齐胸襦裙、宋代褙子等各朝代服饰 1. 丹青幻境与汉服设计的完美结合 丹青幻境Z-Image Atelier是一款专为数字艺术创作设计的AI工具&#xff0c;它将现代AI技术与传统东方美学完美融合。这款工具基于先进的Z-Image架构&#xff0c…...

从FP16到FP8:Stable Diffusion 3.5量化升级指南,显著降低硬件门槛

从FP16到FP8&#xff1a;Stable Diffusion 3.5量化升级指南&#xff0c;显著降低硬件门槛 你是不是也遇到过这样的烦恼&#xff1a;看到别人用Stable Diffusion 3.5生成的图片又清晰又有创意&#xff0c;自己也想试试&#xff0c;结果一查硬件要求——RTX 3090起步&#xff0c…...

零基础Nginx配置:让腾讯混元OCR网页版支持HTTPS和域名访问

零基础Nginx配置&#xff1a;让腾讯混元OCR网页版支持HTTPS和域名访问 1. 为什么需要Nginx反向代理&#xff1f; 当你成功部署了腾讯混元OCR的WebUI后&#xff0c;可能会发现直接通过http://服务器IP:7860访问存在几个问题&#xff1a; 安全性不足&#xff1a;直接暴露服务端…...