给定使用commit的更改,然后使用revert ,那么撤消该恢复的最佳方法是什么?

理想情况下,这应该使用新的提交来完成,以便不重写历史记录。


#1楼

git cherry-pick <original commit sha>
将制作原始提交的副本,实质上是重新应用提交

恢复还原将执行相同的操作,并提供更复杂的提交消息:
git revert <commit sha of the revert>

这些方法中的任何一种都允许您在不覆盖历史记录的情况下进行git push ,因为它会在还原后创建新的提交。
键入commit sha时,通常只需要前5个或6个字符:
git cherry-pick 6bfabc


#2楼

对我来说这看起来很愚蠢。 但我遇到了同样的情况,我确实恢复了恢复提交。 我做了数字恢复,所以我不得不为每个'还原提交'恢复。

现在我的提交历史看起来很奇怪。

这是一个宠物项目,所以没关系。 但是对于现实生活中的项目,我会优先考虑去一次提交,然后在一次提交和更合理的评论中将所有恢复的代码恢复到一起。


#3楼

如果你不喜欢“恢复恢复”的想法(特别是当这意味着丢失许多提交的历史信息时),你可以随时前往关于“恢复错误的合并”的git文档。

鉴于以下起始情况

 P---o---o---M---x---x---W---x\         /A---B---C----------------D---E   <-- fixed-up topic branch

(W是您合并M的初始恢复; D和E是您最初破坏的功能分支/提交的修复)

您现在可以简单地重放提交A到E,以便它们都不属于恢复的合并:

$ git checkout E
$ git rebase --no-ff P

您的分支的新副本现在可以再次合并为master

   A'---B'---C'------------D'---E'  <-- recreated topic branch/P---o---o---M---x---x---W---x\         /A---B---C----------------D---E

#4楼

或者你可以git checkout -b <new-branch>git cherry-pick <commit>之前和git rebase删除revert commit。 像以前一样发送拉请求。


#5楼

还原提交就像git中的任何其他提交一样。 意思是,您可以将其还原,如:

git revert 648d7d808bc1bca6dbf72d93bf3da7c65a9bd746

这显然只有在推动更改后才有意义,特别是当您无法强制推送到目标分支时(这对您的分支来说是一个好主意)。 如果没有推送更改,只​​需按照其他帖子进行挑选,还原或简单地删除还原提交。

在我们的团队中,我们有一个规则来使用在主分支中提交的Revert提交的恢复 ,主要是为了保持历史记录清洁,以便您可以看到哪个提交还原了什么:

      7963f4b2a9d   Revert "Revert "OD-9033 parallel reporting configuration""This reverts commit a0e5e86d3b66cf206ae98a9c989f649eeba7965f....a0e5e86d3b6    Revert "OD-9055 paralel reporting configuration"This reverts commit 648d7d808bc1bca6dbf72d93bf3da7c65a9bd746....Merge pull request parallel_reporting_dbs to master* commit '648d7d808bc1bca6dbf72d93bf3da7c65a9bd746'

通过这种方式,您可以追踪历史并找出整个故事,即使是那些不了解遗产的人也可以自己解决问题。 然而,如果你摘樱桃衍合的时候,这些有价值的信息丢失(除非你将其包含在注释)。

显然,如果一个提交还原并重新还原不止一次,那就会变得非常混乱。


#6楼

我是这样做的:
如果分支my_branchname包含在已恢复的合并中。 我想要取消my_branchname

我首先从my_branchname做一个git checkout -b my_new_branchname my_branchname
然后我做了git reset --soft $COMMIT_HASH其中$COMMIT_HASH是第一次提交之前提交的提交正确的哈希my_branchname (见git log
然后我做一个新的提交git commit -m "Add back reverted changes"
然后我推git push origin new_branchname分支git push origin new_branchname
然后我对新分支发出拉取请求。


#7楼

恢复恢复将成功

例如,

如果abcdef是你的提交而ghijkl是你在恢复commit abcdef时提交的,那么运行:

git revert ghijkl

这将恢复还原


#8楼

要恢复在提交后还原的未分级和暂存的更改:

git reset HEAD@{1}

要恢复所有未分级删除:

git ls-files -d | xargs git checkout --

#9楼

如果你还没有推动那个改变,那就git reset --hard HEAD^

否则,恢复还原完全没问题。

另一种方法是git checkout HEAD^^ -- . 然后git add -A && git commit

如何“取消恢复”恢复的Git提交?相关推荐

  1. 如何使用'git reset --hard HEAD'恢复到之前的提交? [重复]

    本文翻译自:How do I use 'git reset --hard HEAD' to revert to a previous commit? [duplicate] This question ...

  2. 如何恢复初始git提交?

    本文翻译自:How to revert initial git commit? I commit to a git repository for the first time; 我第一次提交了一个gi ...

  3. 服务器上git项目误删或物理损坏恢复(本地git仓库恢复远程仓库)

    前段时间,公司机房空调坏了,代码仓库服务器烧了,所有代码一夜之间灰飞烟灭--幸好我本地代码仓库是完整的,问题不大.然鹅,我看到有部分同事想用本地最新代码以初始版本上传,要知道我们本地可是有完整仓库,历 ...

  4. 如何恢复隐藏的未提交更改

    本文翻译自:How to recover stashed uncommitted changes I had some uncommitted changes in my development br ...

  5. IOS开发教程第一季之03多线程day3--最大并发数,队列的暂停,取消和恢复、操作优先级、线程监听、多线程下UITableView显示图片案例

    1.NSOperation–最大并发数 什么是并发数 同时执行的任务数,比如同时开3个线程执行3个任务,并发数就是3 最大并发数的相关方法 -(NSInteger)maxConcurrentOpera ...

  6. 不用copy代码--eclipse使用git提交项目-转

    原文地址:http://blog.csdn.net/u014079773/article/details/51595127 准备工作: 目的:eclipse使用git提交本地项目,提交至远程githu ...

  7. eclipse使用git提交本地项目,提交至远程github上

    准备工作: 目的:eclipse使用git提交本地项目,提交至远程github上 eclipse版本:eclipse4.5  64位 jdk版本:jdk-1.7 64位 项目类型:maven web项 ...

  8. Git 提交规范-Java程序员收藏必备

    你可能会忽略的 Git 提交规范 规范是建立在程序开发者与程序阅读者一个沟通的桥梁,是一个团队必须要严格遵守的约定 --动力节点Java学院 一.为什么需要规范? 无规矩不成方圆,编程也一样. 如果你 ...

  9. Git 提交常见问题总结

    使用git的时候,总会碰到一些奇怪的报错,这里汇总一下git常见的报错信息以及解决方法 文章目录 一.git 提交代码从建立本地仓库到代码提交步骤 二 拉取远程仓库部分文件 三 git 案例分析 3. ...

最新文章

  1. 21张让你代码能力突飞猛进的速查表(神经网络、线性代数、可视化等)
  2. php如何逐条读取数据库,php从数据库中读取特定的行(实例)
  3. javascript 解决IE8 兼容 placeholder 属性 含password
  4. stft isar成像 matlab,基于时频分析的ISAR成像
  5. Nginx源码分析 - HTTP模块篇 - HTTP模块的阶段处理PHASE handler(23)
  6. React:组件的生命周期
  7. 【基础处理】基于matlab GUI语音信号播放【含Matlab源码 946期】
  8. android 仿qq it蓝豹,十大Android开源项目-IT蓝豹
  9. Linux查看opencv版本
  10. Laravel 留言评论功能
  11. Katalon Recorder安装及使用
  12. js——行间样式与非行间样式
  13. 电脑上的回收站无法清空
  14. 手机端获取用户详细地理位置(高德地图API)
  15. python第一行左对齐_python 左对齐,右对齐
  16. 卷积神经网络调参技巧(2)--过拟合(Dropout)
  17. 数据结构(七)二叉搜索树
  18. 动漫常用网站/APP 彻底帮你解决看动漫的烦恼
  19. Unity官方教學專案 - Character Customization (紙娃娃系統)
  20. QT 多线程中使用QCanBusDevice进行PCAN通讯时,无法正常发出数据

热门文章

  1. Windos 解决Flutter 报错
  2. android debug database 源码解析
  3. Java排序算法(1)
  4. 计算机安装双系统后系统引导修复的方法
  5. IOS开发笔记6-C语言基础复习
  6. iOS进阶之架构设计MVVM的实现示例(5)
  7. EasyUI-datagrid 对于展示数据进行处理(formatter)
  8. Github 入门1 (下载git , 连接本地库与github仓库)
  9. sudo brew install mongodb报错
  10. 兼容IE8,滚动加载下一页