首页 > 其他分享 >git回撤多种方式解读

git回撤多种方式解读

时间:2024-07-16 20:44:11浏览次数:12  
标签:reset --- git -- hard 解读 提交 回撤

git rollback 不是一个 Git 的原生命令,但它通常指的是在 Git 中将仓库状态恢复到之前的某个状态。这个操作可以通过多种方法实现,具体取决于你想要恢复的内容和程度。以下是一些常见的恢复操作:

常见的恢复操作

  1. 撤销最后一次提交:如果你想撤销最后一次提交,同时保留工作目录的更改,可以使用 git reset

    git reset --soft HEAD~1
    
    • --soft:只移动 HEAD 指针,不更改索引和工作目录。
    • HEAD~1:表示上一个提交。
  2. 完全撤销最后一次提交:如果你想撤销最后一次提交,并删除所有更改,可以使用 git reset --hard

    git reset --hard HEAD~1
    
    • --hard:重置索引和工作目录,使其匹配到上一个提交。
  3. 恢复到特定提交:如果你想将分支恢复到某个特定的提交,可以使用提交哈希。

    git reset --hard <commit-hash>
    
  4. 撤销已经推送的提交:如果你已经推送了提交,并且需要撤销,可以使用 revert

    git revert <commit-hash>
    
    • git revert 会创建一个新的提交来撤销指定的提交,这样不会破坏提交历史。
  5. 放弃工作目录的更改:如果你想放弃工作目录中的未提交更改,可以使用 git checkout 或 git restore

    git checkout -- <file>
    

    或者(Git 2.23+):

    git restore <file>
    

实例

假设你有以下提交历史:

A---B---C---D main

你想回滚到提交 B

1. 撤销最后一次提交(保留更改)

git reset --soft HEAD~1

现在你的提交历史是:

A---B---C main (changes from D are staged)

2. 完全撤销最后一次提交

git reset --hard HEAD~1

现在你的提交历史是:

A---B---C main

工作目录和索引也会恢复到提交 C 的状态。

3. 恢复到特定提交(如 B

git reset --hard <B-commit-hash>

现在你的提交历史是:

A---B main

4. 撤销已经推送的提交

如果你推送了 C 和 D,但需要撤销 D

git revert <D-commit-hash>

现在你的提交历史是:

A---B---C---E main

E 是一个新的提交,撤销了 D 的更改。

注意事项

  • 慎用 --hard:使用 git reset --hard 会丢失工作目录中的未提交更改,请确保这些更改不再需要或已经备份。
  • 合作项目中小心使用 reset:在共享分支(如 main 或 master)上使用 reset 可能会导致其他开发者的历史记录与远程仓库不同步,建议在这种情况下使用 revert
  • 了解各命令的影响:确保理解每个命令的作用及其对提交历史、索引和工作目录的影响,以避免意外的数据丢失。

通过这些方法,你可以在 Git 中实现“回滚”操作,恢复到之前的某个状态。

标签:reset,---,git,--,hard,解读,提交,回撤
From: https://www.cnblogs.com/chentiao/p/18306055

相关文章

  • pycharm的git控制窗口里对远程分支进行checkout后,如果和本地文件有冲突会怎么办
    在PyCharm中,当你checkout一个远程分支时,它确实会将该分支的文件更新到本地。这一过程类似于在命令行中执行gitcheckout<branch>,然后将远程分支的内容同步到本地工作目录当你在PyCharm中检出一个远程分支时,如果本地文件有未提交的更改且这些更改与即将检出的分支发生冲突,Py......
  • 解读InnoDB数据库索引页与数据行的紧密关联
    目录一、快速走进索引页结构(一)整体展示说明(二)内容说明FileHeader(文件头部)PageHeader(页面头部)Infimum+Supremum(最小记录和最大记录)UserRecords(用户记录) FreeSpace(空闲空间)PageDirectory(页面目录)FileTrailer(文件尾部)二、索引页与记录行的简单关系说明(一)数据......
  • gitlab通过docker部署搭建
    企业级GitLab在Docker部署使用 一、部署gitlab这里使用的是Centos8,安装Docker环境,这里不说了,参考:https://www.cnblogs.com/wei325/p/15139701.htmlgitlab有ce版和ee版,ce版为免费版本;ee版为企业版本,需要收费;这里用ce版。1)拉取Gitlab镜像dockerpullgitlab/gitlab-ce......
  • FTK Imager的强大功能:详细解读内存和磁盘镜像导出
    本指南将详细解读如何使用FTKImager进行内存镜像导出、镜像挂载和磁盘镜像导出。通过这篇文章,我希望能够帮助你更好地理解和应用这些技术,提高你的工作效率和准确性。文档目录简介准备工作1.1安装FTKimager1.2汉化(可选)1.3界面介绍磁盘镜像导出2.1什么是磁盘镜......
  • Linux 配置gitlab步骤
    最近在玩gitlab,记录一下配置gitlab的过程一、安装gitlab相关的依赖环境   (1) yuminstall-ycurlpolicycoreutilsopenssh-serveropenssh-clientspostfixpolicycoreutils-pythoncronie           (2) 启动Postfix        systemct......
  • Sixth Article from github - 6
    Title1contentfortest1Title2contentaddedfortest2文章链接:https://www.cnblogs.com/BensonLaur/p/18305465测试修改cblog覆盖情况继续修改github,覆盖测试显示图片(image\2024-07-16\1.png)图片1测试显示图片(https://pic.cnblogs.com/avatar/683006/2024071612......
  • idea 查看项目的git路径
    目录第一种方式:第二种方式:第三种方式:第一种方式:1、打开项目,在工程上右键,选择ShowinExplorer;如下图:2、此时会打开本地的代码路径窗口;如下图:3、双击工程,会出现git目录文件夹;4、双击进去git目录,打开config文件夹;5、文件里面的url属性即为git地址;第二种方式:1、......
  • 字节跳动内网开源的《Python项目开发实战》,GitHub飙升!
    今天给小伙伴们分享的这份手册的内容共15个章节,总共可以分为四个部分。第一部分,主要讲“Python开发入门”,这部分将重点放在了个人开发上,涵盖了简单的web应用开发和Python项目结构等。第二部分,主要讲“团队开发周期”,介绍书中的极客们在多人团队开发中遇到的问题,以及如何提......
  • PX4学习日志四:PositionControl.cpp代码解读
    首先看boolPositionControl::update(constfloatdt)函数,该函数先进行有效性判断。跳转到_positionControl函数if(valid){_positionControl();分析_positionControl函数3.1通过P控制实现速度调节Vector3fvel_sp_position=(_pos_sp-_pos).emult(_gain_pos_p);......
  • 嵌入式入职上班第一天:读懂保护与解读保护
    摘要:作为一名嵌入式工程师,了解和掌握保护机制至关重要。本文将为大家介绍嵌入式系统中常见的保护机制,帮助新入职的嵌入式工程师快速上手。#正文:##一、引言嵌入式系统在各个领域都有广泛的应用,为了保证系统的稳定性和安全性,各种保护机制应运而生。作为一名嵌入式新入职的......