首页 > 其他分享 >Git 回滚篇git revert

Git 回滚篇git revert

时间:2022-08-18 18:01:58浏览次数:82  
标签:回滚 Git revert commitId git 提交 commit

场景:
1.项目上线,发现有bug,要紧急回滚到上个版本;
2.多人合作,在qa出现了蹊跷的bug,不确定是哪个分支带来的,下掉可疑分支;
3.产品觉得还是之前版本比较好。。

噔噔噔噔git revert闪亮登场!

1.回滚某次提交
git revert commitId

2.回滚多次提交
git revert new-commitId^..old-commitId

如果我们想把这三个revert不自动生成三个新的commit,而是用一个commit完成,可以这样:
git revert -n new-commitId^..old-commitId
如果回滚的提交并不连续,导致生成多个新的commit,此时想用一个commit完成,可以这样:
git rebase合并多次commit:
git rebase -i commitId
commitId是想要合并的起始commit,例如,先revert第三次提交,再revert第一次提交,想要只生成一条新的commit时,commitId为revert第三次提交的commitId。

3.回滚之后还想再恢复回来
如果在sim上回滚了feature/EDU-001分支,而后发现这个分支并没有问题,所以没有改动想要再合并到sim此时merge feature/EDU-001,会发现没有任何可提交的更改,_这是因为从时间的发生顺序来看,A分支第一次合并之前的修改发生在revert之前,revert发生在后,而 revert抛弃了A第一合并之前的修改,那么再合并Git就认为你永远抛弃了A第一次之前的修改。_
所以要解决这个问题,需要把revert产生的提交再revert一次。

参考链接:https://blog.csdn.net/qq_35008279/article/details/86316819

为什么选择revert,不要reset?
1.revert和reset相比有两个重要的优点。首先,它不会改变项目历史,对那些已经发布到共享仓库的提交来说这是一个安全的操作。
git reset 有很多种用法。它可以被用来移除提交快照,尽管它通常被用来撤销缓存区和工作目录的修改。不管是哪种情况,它应该只被用于本地修改。切记,你无权重设公共历史。

2.git revert 可以针对历史中任何一个提交,而 git reset 只能从当前提交向前回溯。

参考链接:https://github.com/geeeeeeeeek/git-recipes/wiki/2.6-回滚错误的修改

标签:回滚,Git,revert,commitId,git,提交,commit
From: https://www.cnblogs.com/wstmljf/p/16599625.html

相关文章

  • git使用
    1.版本控制1.1什么是版本控制版本控制(Revisioncontrol)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版......
  • 自建git服务
    自建Git服务由于工作或者自学的需求,我们有时候需要在内网创建一个Git服务方便保存代码和部署应用。有一个轻量级易部署的开源项目gitea,不仅功能适用还支持跨平台。Git......
  • 解决TortoiseSVN或者TortoiseGit拉取的文件夹不能完整显示绿色打钩、黄色、红色感叹号
    某天突然发现用SVNCheckout过的文件夹不显示任何SVN相关的小图标了,例如:绿色打钩,红色感叹等 排查发现是我更新了某个软件(微软的OneDrive),于是它的注册表排在了SVN的前面,......
  • gitlab 触发Jenkins简单示例
    //UsesDeclarativesyntaxtoruncommandsinsideacontainer.pipeline{agent{label"test"}post{failure{updateGitl......
  • GitHub Actions Environment secrets vs Repository secrets All In One
    GitHubActionsEnvironmentsecretsvsRepositorysecretsAllInOneEnvironments,environmentsecrets,andenvironmentprotectionrulesareavailableinpubli......
  • Snagit 2022 for mac(截图录像工具)中文直装版
    TechSmithSnagit2022formac中文版是一款屏幕截图屏幕录制软件,可让您在Mac上捕获屏幕截图、录制屏幕视频。支持滚动截图(长截图)、网页截图、录制系统声音、录制麦克......
  • git submodule sync --recursive
     在为父级项目拉取更新时,还会出现一种特殊的情况:在你拉取的提交中,可能.gitmodules文件中记录的子模块的URL发生了改变。比如,若子模块项目改变了它的托管平台,就会......
  • gitlab重置root/admin管理员密码
    1.首先ssh登录你的gitlab服务器,并执行下面命令gitlab-railsconsoleproduction2.直到重新加载好控制台,这里有多种方法来查找你的root用户user=User.where(id:1).fi......
  • git常用命令
    1、首次安装设置用户名和邮箱gitconfig--globaluser.name"用户名"gitconfig--globaluser.email"邮箱"   设置完用户签名后,会在用户名目录C:\Users\ghx......
  • git简单介绍
    1.git的四个工作区域Git本地有四个工作区域:工作目录(WorkingDirectory)、暂存区(Stage/Index)、资源库(Reponsitory或GitDirectory)、git仓库(RemoteDirectory) ......