首页 > 其他分享 >【git】resert、revert代码丢失解决方案

【git】resert、revert代码丢失解决方案

时间:2024-06-06 15:00:13浏览次数:19  
标签:reset git -- revert Git 提交 resert

技术博客:Git Reflog与多场景下的版本恢复策略实战指南

在软件开发的旅途中,Git作为版本控制的守护者,为开发者们提供了强大的历史记录追溯能力。今天,我们将通过具体实例,深入探索如何运用Git的reflog命令找回丢失的代码,并通过对比git revertgit reset在不同情境下的应用,为你提供一套全面的版本恢复策略。

一、Git Reflog

让我们从一个真实的场景出发。假设你在feature/offline分支上工作,不小心误操作导致某些提交“丢失”。这时,git reflog便成了你的时光机。

操作命令示例:

$ git reflog

假设输出如下:

da57ec9d (HEAD -> feature/sc_offline) HEAD@{0}: commit (amend): 【offline】代码完善
0227a2d2 HEAD@{1}: commit: 【offline】下线代码
...
二、利用Git Reflog找回丢失的提交

找回丢失提交实战:

假设我们发现0227a2d2是丢失那次重要提交的哈希值,可以通过以下命令找回:

  1. 使用git cherry-pick恢复特定提交:
$ git cherry-pick 0227a2d2
  1. 或者,使用git reset --hard彻底回滚到特定提交:
$ git reset --hard 0227a2d2

注意git reset --hard会丢弃当前工作目录的所有更改,请谨慎使用。

三、git revertgit reset的实战智慧
  • git revert实战:

假设你需要撤销feature/sc_offline分支上一个已合并的错误提交,可以这样做:

$ git revert <错误提交的哈希值>

例如,如果要撤销上一次提交,可以直接用HEAD

$ git revert HEAD
  • git reset实战:

当你确定要放弃本地未提交的更改,可以局部重置某个文件或整个工作目录:

$ git reset <file_path> # 重置单个文件
$ git reset --hard # 重置整个工作目录
四、分支合并的艺术与陷阱

在合并分支时,git mergegit rebase是常用的两种方式,但都需谨慎操作。

  • 预演合并:
$ git merge --no-commit dev # 预演合并dev分支
  • 解决冲突:
# 手动编辑冲突文件后
$ git add <conflict_file>
$ git commit -m "Merge branch 'dev' and resolve conflicts"
五、结语

Git的reflogrevertreset是每个开发者维护代码历史、应对复杂合并情景的必备技能。

标签:reset,git,--,revert,Git,提交,resert
From: https://blog.csdn.net/qq_41767061/article/details/139451943

相关文章

  • Github Fork仓库的冲突与同步管理
    在使用Github进行协作开发时,fork一个仓库并在本地进行开发是常见的工作流程。然而,当源仓库(上游仓库)有了更新时,如何同步这些更新并解决可能的合并冲突是一个关键问题。本文将详细介绍如何管理这些操作。步骤一:Fork并克隆仓库首先,fork你感兴趣的源仓库,并将其克隆到本地:gitclon......
  • GitHub 常用操作与常用命令——GitHub入门,看这一文就够了
    文章目录GitHub常用操作in关键词限制搜索范围:stars或fork数量关键词查找:awesome加强搜索:高亮显示某一行的代码:项目内搜索:显示快捷键:Git常用命令初始化命令查看当前git配置信息:设置提交代码时的用户信息在当前目录新建一个Git代码库下载一个项目和它的整个代码版本与......
  • gitlab CI实践
    1.概念每个工程里可编写.gitlab-ci.yml, 对应一个流水线(pipeline),流水线分不同阶段(stage),每个阶段包含不同作业(job)每个作业有产物(artifacts)默认情况下,后期阶段的作业会自动下载早期阶段作业创建的所有产物。可以使用 dependencies控制作业中的产物下载行为,只取部分产物。使......
  • 如何解决 Docker Compose文件无法拉取:解决运维技术领域的Bug :Failed to pull Docker C
    如何解决DockerCompose文件无法拉取:解决运维技术领域的Bug:FailedtopullDockerComposeYAMLfilefromGitHubrepository原创作者:猫头虎作者微信号:Libin9iOak作者公众号:猫头虎技术团队更新日期:2024年6月6日博主猫头虎的技术世界......
  • [email protected]: Permission denied (publickey)
    输入ssh-keygen-trsa-C"[email protected]"   [email protected]的邮箱 一直回车,直到看到  然后到这个路径下打开文件  将里面的内容复制到git帐号的ssh中 ......
  • Gitlab 配置LDAP身份认证
     vi /etc/gitlab/gitlab.rbgitlab_rails['ldap_enabled']=truegitlab_rails['ldap_servers']=YAML.load<<-'EOS'main:#'main'istheGitLab'providerID'ofthisLDAPserverlabel:'LDA......
  • Git客户端工具:SourceTree for Mac v 4.1.5中文特别版
    SourceTree是一款由Atlassian公司推出的免费的Git和Mercurial版本控制系统的可视化客户端工具。它提供了一种简单易用的方式来管理和查看代码的版本历史,以及进行代码的比较、合并和提交等操作。用户可以通过SourceTree轻松地管理多个代码仓库,并且可以直观地查看代码的变化和提......
  • idea中Git分支操作
    创建分支实际开发中,一般会采用分支开发、主干发布的方式,现在我们就先看看如何创建分支。基本步骤如下:第一步:右键项目,选择Git/NewBranch,例如:第二步:给分支起个名字,例如:第三步:分支创建后,会自动切换到当前创建的分支,然后在新分支上可以编辑代码并提交,例如:合并分支不同的分......
  • 【git commit错误】error: bad signature 0x00000000 fatal: index file corrupt原因
    解决Git错误:error:badsignature0x00000000fatal:indexfilecorrupt原因分析及解决方案在使用Git进行版本控制时,可能会遇到各种错误。其中之一是关于索引文件(通常为.git/index)损坏的错误,这会导致无法正常提交更改。基础知识Git索引:Git使用一个索引文件来跟踪工作目......
  • Gitlab Runner在Windows如何自动发布基于.NET Framework 4.8的传统ASP.NET Web应用程
    摘要软件流水线能把程序员从繁琐的发布工作中解脱出来,但是跑在WindowsIIS里的传统Web应用程序,用Docker的方式不是最方便的。本文详细描述如何用Windows的OpenSSHServer来上传网站后,用PowerShell创建和修改IIS的虚拟目录应用程序。一、自动打包传统ASP.NETWeb应用程序1、Gitl......