git提交和回退

目录

  • 一. git 提交
  • 二. git commit 后准备回退,尚未 git push
  • 三. git add 添加多余文件 撤销操作
  • 四. 更改 Git commit 的默认编辑器
  • 五. 撤销某个commit的变更
  • 六. 回退到之前的commit状态
  • 总结:

一. git 提交

git pull  # 更新代码
git status # 查看代码状态,包括修改的,未追踪的
git branch -a   # 查看有哪些分支和自己在哪个分支
git diff(file) # 查看文件变动处,不接file即为查看所有改动文件变动
git add file     # 提交文件至本地暂存区
git commit -m "...."       # 提交文件并说明提交信息
git push origin diag_service_base  # (orign:远端分支   diag_service_base:自己所在分支   即为将自己分支上的改动文件提交至远端分支),待有权限的人合并分支git config --global user.email "dengwen@g-pulse.net"  # 配置git名字和邮箱
git config --global user.name "dengwen"
git config --global credential.helper store           # 保存git名字和密码,不用每次提交输入名字和密码
git config --global --list                            # 查看当前服务器配置名称和邮箱

在这里插入图片描述

二. git commit 后准备回退,尚未 git push

  1. 执行 git log 找到准备退回到的 commit 的 id
    比如 commit id 为:90f1ce4d73c5dc63f46fa61984a6bb878f47374
  2. 执行 git reset --soft HEAD^ 操作
    对应 HEAD 即上述 commit id 信息
git reset --soft 90f1ce4d73c5dc63f46fa61984a6bb878f47374^    # 用 soft 回退则文件的修改还在,还可以继续其他操作
git reset --hard 90f1ce4d73c5dc63f46fa61984a6bb878f47374^    # 用 hard 回退则会用指定分支覆盖本地文件,文件的修改不存在,不建议使用,除非想用指定版本覆盖本地

说明:最后的符号^记得不要漏掉
此时通过 git status 时,可以看到 git add 的文件(绿色)

git restore --staged CMakeLists.txt  # 恢复到提交之前状态
git stash                            # 将更改文件暂存到暂存区
git checkout -b xxx                  # 创建 xxx 分支并切换到此分支上
git stash pop                        # 将暂存区的更改文件弹出到新分支上
git add                              # 执行常规操作即可提交文件
  1. git reset modify_file
    将指定文件 modify_file 恢复到上一个提交(commit)的状态。这个命令会撤销对该文件的所有本地修改,将其恢复到最近一次提交时的状态。这可以用于取消对文件的某些更改,或者在需要时重新开始对文件的修改。需要注意的是,使用 git reset 可能会丢失未提交的更改,因此在使用之前务必谨慎考虑。
  2. git checkout – modify_file
    通过 git checkout – modify_file 还原至修改之前状态
git checkout -- .  # 回退多个修改文件
git checkout a99a439c7fb20d6e5c7a25162cb6c96eebcbd3f0  # 跳转到指定版本
git checkout a99a439c7fb20d6e5c7a25162cb6c96eebcbd3f0 -- file  # 跳转到指定版本的文件
  1. git clean -df
    删除本地有但版本库中没有的文件
git clean -df

三. git add 添加多余文件 撤销操作

git reset HEAD 后面什么都不跟的,就是上一次 add 里面的内容全部撤销
git reset HEAD XXX 后面跟文件名,就是对某个文件进行撤销

  1. git commit 撤销操作
git reset --soft HEAD^ 

这样就成功的撤销了 commit 操作
注意,仅仅是撤回 commit 操作,您写的代码仍然保留。
2. git reset 其他参数说明:

--mixed 
# 意思是:不删除工作空间改动代码,撤销 commit,并且撤销 git add . 操作
# 这个为默认参数, git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft  
# 不删除工作空间改动代码,撤销 commit,撤销 git add . 
--hard
# 删除工作空间改动代码,撤销 commit,撤销 git add . 
# 注意完成这个操作后,就恢复到了上一次的 commit 状态。
# commit 注释写错了,只是想改一下注释,只需要:
git commit --amend
# 此时会进入默认 vim 编辑器,修改注释完毕后保存就好了。

四. 更改 Git commit 的默认编辑器

在 Linux 中可以按照以下步骤进行操作:
1.打开终端,并输入以下命令来更改 Git 的全局配置:

git config --global core.editor <editor>

将 editor 替换为你想要设置为默认编辑器的命令。例如,如果你想要将默认编辑器更改为 vim,可以输入以下命令:

git config --global core.editor "vim"

2.保存更改后,Git 将使用设置的编辑器作为默认编辑器进行 commit 操作。
现在,当在执行 Git commit 操作时,Git 将自动启动设置的编辑器来编辑: commit message。
验证设置是否生效,可以使用以下命令查看当前的 Git 全局配置:

git config --global --get core.editor

git如何撤销提交的commit

五. 撤销某个commit的变更

如果我们需要完全撤销某个commit及其对应的变更,可以使用git revert命令。
步骤如下:

  1. 使用git log命令查看提交历史,并找到需要撤销的commit的哈希值,例如"commit2"。
  2. 输入git revert commit2来撤销该commit及其对应的变更。
  3. Git会自动创建一个新的commit来记录撤销的更改。可以使用git log命令查看撤销后的提交历史。
  4. 最后使用git push命令将撤销后的commit推送到远程仓库。
    这种方法是相对安全的,因为它会保留之前的commit记录,并且不会破坏其他人的代码库。

六. 回退到之前的commit状态

如果我们需要完全回退到某个commit之前的状态,可以使用git reset命令。
步骤如下:

  1. 使用git log命令查看提交历史,并找到需要回退到的commit的哈希值,例如"commit3"。
  2. 输入git reset commit3来回退到该commit之前的状态。
  3. Git会将当前分支指针指向到指定的commit,但是之后的commit会被丢弃。
  4. 最后使用git push -f命令将回退后的状态强制推送到远程仓库。
    需要注意的是使用git reset命令回退commit会导致之后的commit丢失,可能会导致其他人的代码库出现问题,所以在使用之前应该与团队成员进行沟通和协调。

总结:

撤销提交的commit是Git中常见的操作之一,在错误的提交或者需要对之前的代码变更进行修复的情况下,我们可以使用git commit --amend命令修改最后一次commit的内容,使用git revert命令撤销某个commit的变更,或者使用git reset命令回退到之前的commit状态。

沾衣欲湿杏花雨,吹面不寒杨柳风。
2024年3月26日18:37:02

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云原生最佳实践系列 4:基于 MSE 和 SAE 的微服务部署与压测

方案概述 云原生应用平台为基于 Spring Cloud / Dubbo 开发的微服务应用提供了完善的能力支撑&#xff0c;例如服务注册发现、Serverless 无服务部署、实例弹性伸缩、微服务链路跟踪、全链路压力测试等&#xff0c;应用能够方便快捷的部署在阿里云上。 阿里云原生产品完全兼容…

SEO 的未来:GPT 和 AI 如何改变关键词研究

谷歌Gemini与百度文心一言&#xff1a;AI训练数据的较量 介绍 想象一下&#xff0c;有一个工具不仅可以理解错综复杂的关键字网络&#xff0c;还可以预测搜索引擎查询的变化趋势。 这就是生成式预训练 Transformer (GPT) 和其他人工智能技术发挥作用的地方&#xff0c;以我们从…

怎么创建百科人物的词条?百度百科词条创建

百度百科中&#xff0c;创建一个属于自己的词条&#xff0c;不仅是个人荣誉的象征&#xff0c;更是对其生平事迹的官方记录&#xff0c;能够让更多人了解和记住一个人的成就。那么&#xff0c;如何创建一个高质量的百科人物词条呢&#xff1f;本文伯乐网络传媒将详细解答这一问…

详细分析Linux中的core dump异常(附 Demo排查)

目录 1. 基本知识2. 进阶知识3. Demo4. 彩蛋 1. 基本知识 Core dump 是指在程序异常终止时&#xff0c;操作系统将程序的内存映像保存到磁盘上的一种机制。 在 Linux 系统中&#xff0c;core dump 提供了一种调试程序错误的重要方式&#xff0c;它记录了程序在崩溃时的内存状态…

Codeup_1132:问题 A: 最长公共子序列

目录 Problem DescriptionInputOutputSample InputSample Output原题链接解题思路代码实现&#xff08;C&#xff09; Problem Description 给你一个序列X和另一个序列Z&#xff0c;当Z中的所有元素都在X中存在&#xff0c;并且在X中的下标顺序是严格递增的&#xff0c;那么就…

伦敦银交易技巧:复合汇聚区域的应用

在伦敦银交易中我们需要掌握一些交易技巧&#xff0c;有了交易技巧我们才看得懂市场走势&#xff0c;进而作出适合我们的交易选择。下面我们就来讨论一个关于复合汇聚区域的伦敦银交易技巧。 相信很多人都学过支撑阻力位这个伦敦银交易技巧。一般来说&#xff0c;在伦敦银交易中…

ForkJoinPool在生产环境中使用遇到的一个问题

1、背景 在我们的项目中有这么一个场景&#xff0c;需要消费kafka中的消息&#xff0c;并生成对应的工单数据。早些时候程序运行的好好的&#xff0c;但是有一天&#xff0c;我们升级了容器的配置&#xff0c;结果导致部分消息无法消费。而消费者的代码是使用CompletableFutur…

C++初学者:如何优雅地写程序

我喜欢C语言的功能强大&#xff0c;简洁&#xff0c;我也喜欢C#的语法简单&#xff0c;清晰&#xff0c;写起来又方便好用。 一、为什么不用C语言写程序。 C语言用来做题目&#xff0c;考试研究是很方便的&#xff0c;但是用来写程序做软件&#xff0c;你就会发现&#xff0c…

Altair(澳汰尔) Radioss® 评估和优化动态载荷下的高度非线性问题

Altair&#xff08;澳汰尔&#xff09; Radioss 评估和优化动态载荷下的高度非线性问题 Radioss 是一款超前的分析解决方案&#xff0c;可评估和优化动态载荷下的高度非线性问题。它广泛应用于全球各行各业&#xff0c;能有效提高复杂设计的耐撞性、安全性和可制造性。 30 多…

PMBOK第八版、项目管理AI标准...PMI标准今年有这些进展

项目管理实践标准不断在演变&#xff0c;PMI作为项目管理领域的权威机构&#xff0c;一直致力于与全球各行各业的项目实践者一同探索和研究最新的行业标准&#xff0c;确保PMI标准符合全球项目专业人士当前能力建设与职业发展的需要。 今年以来&#xff0c;我们发布了一系列PM…

Python接口自动化pytest框架安装

1、创建一个requirements.txt文件夹 2、输入内容&#xff1a;如下图 pytest pytest-html pytest-xdist pytest-ordering pytest-rerunfailures pytest-base-url allure-pytest3、在terminal中输入安装命令&#xff1a;pip install -r requirements.txt 安装成功 4、在termina…

JavaScript混淆工具选择与使用指南

摘要 本文介绍了什么是js混淆工具&#xff0c;以及为什么需要使用js混淆工具。详细解释了js混淆工具的实现原理和作用&#xff0c;探讨了如何选择合适的js混淆工具&#xff0c;列举了几款常用的js混淆工具&#xff0c;并对它们的特点和适用场景进行了分析。最后总结了js混淆工…

HAL库 DMA +USART收发数据

DMA 首先&#xff0c;DMA相当于CPU的弱智小助手&#xff0c;不会复杂的逻辑运算&#xff0c;不占用CPU的时间&#xff0c;DMA就是一个数据搬运工。 串口收发数据&#xff0c;不外乎就是&#xff0c;CPU需要发数据时&#xff0c;将数据丢给DMA,完事就不管了&#xff0c;收数据是…

有关Kitchen-Rosenfeld角点检测的公式推导

第一次看到下面这个公式时,不太清楚怎么推导过来的 后面看了有关Kitchen-Rosenfeld的文章后,明白了 假设梯度的角度 θ \theta θ tan ⁡ θ = I y I x \tan \theta =\frac{I_y}{I_x} tanθ=Ix​Iy​​ 其中 I y I_y Iy​为y偏导, I x I_x Ix​为x偏导, I x x I_{xx} I…

PTA-练习9

目录 实验10-4 递归实现顺序输出整数 实验10-10 十进制转换二进制 实验10-6 递归求简单交错幂级数的部分和 实验11-1-2 输出月份英文名 实验11-1-6 指定位置输出字符串 实验11-1-8 查找子串 递归的基本思路&#xff1a; 推出递归的条件或者进入递归的条件每层递归需要执行…

html页面使用@for(){},@if(){},利用jquery 获取当前class在列表中的下标

基于以前的项目进行修改优化&#xff0c;前端代码根据List元素在html里进行遍历显示 原先的代码&#xff1a; 其中&#xff0c;noticeGuide.Id是标识noticeGuide的唯一值&#xff0c;但是不是从0开始的【是数据库自增字段】 但是在页面初始化加载的时候&#xff0c;我们只想…

JMeter 环境安装及配置

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

基于单片机防酒驾酒精检测报警系统装置设计

**单片机设计介绍&#xff0c;基于单片机防酒驾酒精检测报警系统装置设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机防酒驾酒精检测报警系统装置的设计旨在通过单片机技术和酒精传感器&#xff0c;实现对驾驶员酒…

labelme自动标注工具的安装和python代码修改

labelme嵌入SAM和EfficientSAM自动标注模型 目录: 1.labelme windows环境下安装python版本labelme 2.labelme.exe直接安装 3.labelme生成exe 4.labelme python代码修改 labelme自动标注使用方法 编辑/Create AI-Polygon 自动分割,直接生成分割图,标注为point,完成标注后…

【WiFi】WiFi QoS映射关系及抓包分析

WiFi Aliance认证测试对应图 RFC8325 ​​​​​​RFC 8325https://datatracker.ietf.org/doc/html/rfc8325 RFC 8325 – WiFi QoS Mappings | mrn-cciew (mrncciew.com)https://mrncciew.com/2021/09/14/rfc-8325-wifi-qos-mappings/ 802.11 UP和DSCP映射关系 802.11 UP …