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.mfbz.cn/a/493131.html

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

相关文章

【保姆级讲解如何Stable Diffusion本地部署】

&#x1f308;个人主页:程序员不想敲代码啊&#x1f308; &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f3c6; &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提…

rancher2.6部署

rancher2.6部署 1、准备环境镜像 2、部署3、密码获取密码设置新密码 4、设置语言5、导入已有集群 1、准备 环境 docker-ce-20.10.23-3.el8.x86_64.rpm以及依赖rpm kubernetes&#xff1a;v1.23.17 镜像 &#xff08;rancher和k8s有个版本对应关系&#xff0c;rancher2.5就不…

OSCP靶场--GLPI

OSCP靶场–GLPI 考点(CVE-2022-35914 php执行函数绕过ssh端口转发jetty xml RCE) 1.nmap扫描(ssh端口转发) ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.194.242 -sV -sC --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-26 22:22 EDT Nmap…

第一个JDBC程序

一、JDBC的概念&#xff1a; JDBC 是 Java DataBase Connectivity (Java 数据连接)技术的简称&#xff0c;是一种可用于执行 SQL 语句的 Java API。它由一些 java 语言编写的类和接口组成&#xff1b;程序员通过使用 jdbc 可以方便地将 SQL 语句传送给几乎任何一种数据库。 二…

C++ :STL中vector扩容机制

vector是STL提供的动态数组&#xff0c;它会在内部空间不够用时动态的调整自身的大小&#xff0c;调整过程中会有大量的数据拷贝&#xff0c;为了减少数据拷贝的次数vector会在调整空间的时候尽量多申请一些空间&#xff0c;这些预留出的空间可以很大程度上减少拷贝的发生。 在…

Shadow Tactics

本题链接&#xff1a; 题目&#xff1a; 样例&#xff1a; 输入 1 1 3 3 U 2 2 2 输出 YES 思路&#xff1a; 根据题意&#xff0c;隼人的坐标是不会动的&#xff0c;并且士兵只能直线来回行动。 所以这里我们需要分成三种情况。 1、隼人坐标在士兵走动路线之间&#xff0c;…

linux如何查看编译器支持的C++版本(支持C++11、支持C++14、支持C++17、支持C++20)(编译时不指定g++版本,默认使用老版本编译)

参考:https://blog.csdn.net/Dontla/article/details/129016157 C各个版本 C11 C11是一个重要的C标准版本&#xff0c;于2011年发布。C11带来了许多重要的改进&#xff0c;包括&#xff1a; 智能指针&#xff1a;引入了shared_ptr和unique_ptr等智能指针&#xff0c;用于更好地…

http认证

1.Digest认证 各字段含义&#xff1a; Nonce 服务器直接返回的数据 H1MD5(user”:”realmpassword) H2MD5(method”:”url) method为请求类型、url不包括域名 Nc 指当前的第几次请求&#xff0c;使用8位16进制显示 Cnonce 8位随机字符串 ResponseMD5(H1”:”nonce”:”…

【C++语言】冲突-C语言:命名冲突(输入输出、缺省参数、引用、内联函数)

文章目录 前言正文2. C的输入与输出&#xff1a;3.缺省参数3.1 缺省参数的概念&#xff1a;3.2 缺省参数的分类&#xff1a;全缺省参数&#xff1a;半缺省参数&#xff1a; 4.函数重载4.1 函数重载的概念&#xff1a; 5.引用5.1 引用的基本概念&#xff1a;5.2 引用的特性&…

系统工程学思想

系统工程学思想 大项目或复杂问题的实施和解决&#xff0c;需要按照系统工程学理论进行&#xff0c;以系统的方法完整、全面的分析&#xff0c;而不是零星的处理问题&#xff0c;沿着逻辑推理的路径&#xff0c;去解决哪些原本靠直觉判断处理的问题。 系统分析过程逻辑结构分为…

A Review on Influence Dissemination in Social Networks

Abstract 影响力传播研究是社交网络信息传播的关键问题。由于影响力分析在营销、广告、个性化推荐、舆情监测等方面的现实意义&#xff0c;研究人员从不同角度研究了该问题并提出了解决方案。在本文中&#xff0c;我们回顾了社交网络中的影响力传播&#xff0c;并得出结论&…

淘宝APP详情数据抓取技术揭秘:用Python实现自动化数据获取(附代码实例)

获取淘宝APP详情数据接口通常涉及到网络爬虫技术&#xff0c;因为淘宝作为一个大型电商平台&#xff0c;其数据并不直接对外公开提供API接口供第三方开发者使用。然而&#xff0c;通过模拟浏览器行为或使用淘宝开放平台提供的API&#xff08;如果有的话&#xff09;&#xff0c…

借助剪映软件生成原创视频(真人人声,免VIP)

civilpy&#xff1a;借助各大模型的优点生成原创视频&#xff08;真人人声&#xff09;Plus0 赞同 0 评论文章​编辑 是的&#xff0c;剪映也出了声音克隆了&#xff0c;只需要十几秒的录音就可以克隆自己的声音&#xff0c;虽然微瑕&#xff0c;但是对于不习惯机器音的很多创…

【面试】Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?

Elasticsearch 在部署时&#xff0c;对 Linux 的设置有哪些优化方法&#xff1f; Elasticsearch是一个分布式搜索和分析引擎&#xff0c;它在Linux环境下的性能和稳定性可以通过一些优化方法进行提升。以下是一些针对Linux环境下Elasticsearch部署的优化方法&#xff1a; 1. 内…

职场人必备!效率翻倍的多微信号必备管理工具大揭秘

在职场中&#xff0c;高效率的工作方式是非常重要的。而为了提高工作效率&#xff0c;合理运用一些工作神器也是必不可少的。今天给大家分享一个多微信号管理工具——微信管理系统&#xff0c;它能够帮助职场人员管理多个微信号&#xff0c;让工作变得更加高效。 首先&#xf…

嵌入式开发——基础元器件

目录 1. 电阻 2. 电容 3. 电感 4. 二极管 5. 三极管 6. MOS管 7. 晶振 8. 磁珠 9. LDO 10. 电源 11. 接地 12. 线路 13. 电压表 14. 电流表 1. 电阻 根据欧姆定理&#xff0c;UI*R&#xff0c;通过某段导体的电流跟这段导体两端的电压成正比&#xff0c;跟这段导…

教你六个步骤完成本地知识库搭建

用通俗易懂的语言说&#xff0c;本地知识库就是一个放在公司电脑或服务器上的知识大宝库。这个宝库里可以放入各种知识&#xff0c;比如公司的规章制度、产品介绍、销售技巧、市场分析报告等等&#xff0c;只要是公司里觉得有用的知识&#xff0c;都可以放进去。 有了它&#x…

如何本地部署Elasticsearch+cpolar实现公网查询与管理内网数据

文章目录 系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff…

Mysql高阶语句—子查询、视图、NULL

目录 一、子查询 1.1 select 1.1.1 相同表查询 1.1.2 多表查询 1.1.3 NOT 取反,将子查询的结果&#xff0c;进行取反操作 1.2 insert 1.3 update 1.4 delete 1.5 exists 1.6 as别名 二、MySql视图 2.1 创建单视图表 2.2 创建多视图表 2.3修改视图表数据 2.4…

Gui guider使用自定义字体总结

在实际开发中&#xff0c;我们通常是使用自定义字体。 在 LVGL 中&#xff0c;用户需要使用自定义的字库&#xff0c;其实现方法可分为两类&#xff1a; ① 通过 C 语言数组&#xff08;内部读取&#xff09;&#xff1b; ② 通过文件系统读取字库&#xff08;外部读取&#…