Git常见操作及工作流程

文章目录

  • 1. 创建本地仓库以及提交修改过程
  • 2. 配置本地仓库`git config`:
  • 3. `git status`
  • 4. 版本回退
  • 5. 撤销修改

首次要明确, git中有三个区, 工作区, 暂存区(index目录), 版本区(远程分支). 还有一个库-对象库

1. 创建本地仓库以及提交修改过程

git init, 之后当前目录下中就会多一个git文件夹(git文件夹称为版本库, 包含配置信息以及暂存区(index)等, 版本库中的文件一般不允许被手动修改, 因为风险极高, 稍有不慎就会破坏仓库), 当创建一个项目要存放在本地仓库进行管理时, 要将项目放在工作区, 工作区是当前本地仓库中除了版本库外的区域 但是, 当前的项目仍不能被git进行管理. 需要先add, 以下介绍详细流程:

  1. 在工作区创建新目录
  2. git add 文件名/. 将工作区中的目录添加到暂存区中, 此时会在对象库中保存版本的修改信息, 在暂存区中存储的是指针, 指向对象库中的修改信息. 使用git log可以查看所有的提交记录
  3. git commit -m "提交描述"将暂存区中的指针提交到版本库, 版本库中存储的也是指针(commit id), 指向对象库中的版本信息. (可进行多次add, 一次性提交到版本库)
  4. 版本库的master有一个头指针, HEAD, 在git文件夹中可以找到该文件. 该文件中存储的是master的路径, 在master中存储的是最近一次提交的commit id, 该commit id可以在Object目录(对象库)中找到, 里面包含本次提交的详细信息和上次提交的commit id.

2. 配置本地仓库git config:

  1. git config user.name “zhangsan” // 为当前本地仓库设设置用户名
  2. git config user.email “123@qq.com”
  3. git config --unset user.name // 重置当前本地仓库用户名
  4. git config – unset user.email
  5. git config -l // 查看配置信息
  6. git config --global user.name “zhangsan” // 为当前机器中所有本地仓库设置用户名
  7. git config --global user.email “123@qq.com”
  8. git config --global --unset user.name
  9. git config --global --unset user.email

3. git status

这条命令有两个作用, 第一查看上一次提交到现在有没有对工作区中的内容进行修改, 这条命令只能看到有哪个文件被修改过, 具体的修改详情还需要git diff 文件名, 这条命令是查看工作区和暂存区中的区别. 另外git status还可以查看有没有添加到暂存区但是没有提交到版本库的文件.

4. 版本回退

  1. git reset [--soft | --mixed | --hard] [HEAD]
    git reset --soft: 只回退版本区, 不回退工作区和暂存区
    git reset --mixed: 只回退版本区和暂存区, 不回退工作区(默认)
    gti reset --hard: 回退版本区, 暂存区和工作区 (慎用)

  2. 首先git log 查看历史修改信息, 拿到要回退版本的commit id, 然后git reset --mixed commit_id

  3. 如果使用了git reset --hard, 导致工作区中的修改也被回退, 想要恢复工作区中的修改时, 需要得到之前一次的commit id, 执行git reset commit_id, 而这个commit id可以通过git reflog得到

  4. 版本回退为什么速度这么快:
    git中有一个HEAD指针, HEAD指针中存放的是master路径, 也就是HEAD指针指向了master, 而master存放的是最近一次commit id, 具体的commit id操作记录在了对象区中, 当进行版本回退时, 仅仅是修改了master中的commit id, 所以速度非常快. 而对象区中的内容并没有被删除, 这也是为什么当版本回退之后还能找到之前的commit id, 回退到之前的版本.

5. 撤销修改

撤销修改分为三种情况, 这三种情况的解决方式都有一个前提(没有push提交到远程仓库):

  1. 当前修改只存在于工作区, 此时要将代码变为最近一次add或commit的状态, 可以用git checkout -- 文件名
  2. 当前修改添加到了暂存区, 此时要将代码变为最近一次commit的状态
    使用git reset --mixed HEAD 文件名/git reset -- hard HEAD(这里因为HEAD指向measter, measter指向最近一次的commit, 所以可以用HEAD代替commit_id, 另外, 如果想退到当前提交的前一次提交, 使用HEAD^ ), 此时就将暂存区中的内容与版本区中的内容同步了, 之后使用git checkout -- 文件名即可
  3. 当前修改添加到了版本区
    git reset -- hard HEAD^

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/911231.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JSP ft06 问题几个求解思路整理

刷到这篇文章使用Q-learning去求接JSP ft06 问题用基本Q-learning解决作业车间调度问题(JSP),以FT06案例为例_q-learning算法在车间调度-CSDN博客 本着贼不走空的原则打算全部copy到本地试下,文章作者使用的tf06.txt在这里获取 https://web.cecs.pdx.e…

Uniapp安装Pinia并持久化(Vue3)

安装pinia 在uni-app的Vue3版本中,Pinia已被内置,无需额外安装即可直接使用(Vue2版本则内置了Vuex)。 HBuilder X项目:直接使用,无需安装。CLI项目:需手动安装,执行yarn add pinia…

Template Method(模板方法)

1)意图 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 2)结构 模板方法模式的结构图如图7-47 所示。 其中: AbstractClass(抽象类) 定义抽象的原语操作,具体…

无人机场景数据集大全「包含数据标注+划分脚本+训练脚本」 (持续原地更新)

一、作者介绍:六年算法开发经验、AI 算法经理、阿里云专家博主。擅长:检测、分割、理解、AIGC 等算法训练与推理部署任务。 二、数据集介绍: 质量高:高质量图片、高质量标注数据,使用 labelimg 软件吐血标注、整理&…

安当ASP系统:适合中小企业的轻量级Radius认证服务器

安当ASP(Authentication Service Platform)身份认证系统是一款功能强大的身份认证服务平台,特别适用于中小企业。其中,简约型Radius认证服务器是安当ASP系统中的一个重要组成部分。以下是对该系统的详细介绍: 一、主要…

跨域及解决跨域

什么是跨域 前端与后端不在同一个域名下: 解决 import jakarta.servlet.*; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component;import java.io.IOException…

关于解决DICOM文件中中文乱码问题的解决方案

目录 问题背景 常见字符集和编码 DICOM标准中的字符集支持 解决方案 示例代码 处理不同字符集的示例 关键点 注意事项 结论 在解析DICOM文件时,如果字符集处理不当,可能会出现中文乱码的问题。本文将介绍如何正确处理DICOM文件中的字符集,以避免乱码问题。DICOM文件…

6.机器学习--PCA主成分分析(降维)

目录 1.问题的引入 为什么要降维? 降维的好处 降维的本质 2.降维的主要方法: 2.1 特征选择 2.2 特征抽取 3.主成分分析(PCA)推导 3.1.向量的表示及基变换 3.2.协方差矩阵及优化目标 3.3.算法及实例 3.4.实例 3.5.代…

我们来学mysql -- 同时使用 AND 和 OR 查询错误(填坑篇)

AND 和 OR 一同使用问题 现象分析处理扩展 现象 业务上在“锁定”当前零件所在出口国的所有零件时,出现其他国家零件 问题定位 分析 or 切断了操作符之间的连续性,从union角度分析 where k1 Td621 and k1 Vda96 or k3 P00009等同 select * fr…

基于Zynq FPGA的雷龙SD NAND存储芯片性能测试

文章目录 前言一、SD NAND特征1.1 SD卡简介1.2 SD卡Block图 二、SD卡样片三、Zynq测试平台搭建3.1 测试流程3.2 SOC搭建 四、软件搭建五、测试结果六、总结 前言 随着嵌入式系统和物联网设备的快速发展,高效可靠的存储解决方案变得越来越重要。雷龙发展推出的SD NA…

vscode翻译插件

vscode翻译插件 需求 : 在编写代码的时候, 打印或者定义变量的时候总是想不起来英文名称, 所有就开发了一款中文转换为英文的插件。 功能 1、目前支持选中中文,右键选择打印或者变量进行转换。 2、目前支持选中中文&#xff0…

信息安全工程师(81)网络安全测评质量管理与标准

一、网络安全测评质量管理 遵循标准和流程 网络安全测评应严格遵循国家相关标准和流程,确保测评工作的规范性和一致性。这些标准和流程通常包括测评方法、测评步骤、测评指标等,为测评工作提供明确的指导和依据。 选择合格的测评团队 测评团队应具备相关…

【C++】lambda表达式的理解与运用(C++11新特性)

🌈 个人主页:谁在夜里看海. 🔥 个人专栏:《C系列》《Linux系列》 ⛰️ 天高地阔,欲往观之。 目录 前言 C11之前的例子 一、lambda的语法 lambda函数示例: 二、lambda的捕获列表 1.传值捕获 mutable修饰 2.…

K8s资源对象监控之kube-state-metrics详解(Detailed Explanation of Kube State Metrics)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

儿童安全座椅行业全面深入分析

儿童安全座椅就是一种专为不同体重(或年龄段)的儿童设计,将孩子束缚在安全座椅内,能有效提高儿童乘车安全的座椅。欧洲强制性执行标准ECE R44/03的定义是:能够固定到机动车辆上,带有ISOFIX接口、LATCH接口的…

传输协议设计与牧村摆动(Makimoto‘s Wave)

有一条活鱼和一条死鱼,你准备怎么做,你会将活鱼红烧或将死鱼清蒸吗?好的食材只需要最简单的烹饪,不好的食材才需要花活儿。 我此前的文字几乎都在阐述一个观点,广域网就是那条死鱼,数据中心则是那条活鱼。…

【极限编程(XP)】

极限编程(XP)简介 定义与核心价值观:极限编程(Extreme Programming,XP)是一种轻量级、敏捷的软件开发方法。它强调团队合作、客户参与、持续测试和快速反馈等价值观,旨在提高软件开发的效率和质…

Autosar CP 内存抽象接口MemIf规范导读

一、MemIf规范概述 内存抽象接口(Memory Abstraction Interface,简称MemIf)是AUTOSAR架构中用于访问和管理非易失性随机存取存储器(NVRAM)的重要组成部分。以下是对MemIf的详细概述: 1. 功能和目的 MemIf的主要功能是为上层软件(如NVRAM管理器)提供统一的接口,以便…

动态规划 —— dp 问题-粉刷房子

1. 剑指offer —— 粉刷房子 题目链接: LCR 091. 粉刷房子 - 力扣(LeetCode)https://leetcode.cn/problems/JEj789/description/ 2. 题目解析 根据上图可以得到costs横坐标(行)是房子的号数,红色的下标是0&…

将vscode的终端改为cygwin terminal

现在终端是默认的power shell,没有显示cygwin 接下来选择默认配置文件 找到cygwin的选项即可 然后提示可能不安全什么的,点是,就有了