我该如何回滚到git中的特定提交?

有人可以给我的最佳答案是使用git revert X次,直到达到所需的提交。

假设我想恢复为20提交的旧提交,我必须运行20次。

有没有更简单的方法可以做到这一点?

我不能使用reset,因为此存储库是公共的。


#1楼

要回滚到特定提交:

git reset --hard commit_sha

要回滚10次提交,请执行以下操作:

git reset --hard HEAD~10

如果您不想重写历史记录,可以使用以下帖子中的“ git revert”

如何将Git存储库还原到先前的提交?


#2楼

好吧,我想问题是,“回滚”是什么意思? 如果由于公开而无法reset并且想要保持提交历史记录完整,那是否意味着您只希望工作副本反映特定的提交? 使用git checkout和提交哈希。

编辑:正如评论中指出的那样,使用git checkout而不指定分支将使您处于“无分支”状态。 使用git checkout <commit> -b <branchname>签入分支,或git checkout <commit> . 签入当前分支。


#3楼

尝试这个:

git checkout [revision] .

其中[revision]是提交哈希(例如: 12345678901234567890123456789012345678ab )。

别忘了. 最后,非常重要。 这会将更改应用于整个树。 您应该在git项目根目录中执行此命令。 如果您在任何子目录中,那么此命令仅更改当前目录中的文件。 然后提交,你应该很好。

您可以通过以下方式撤消该操作

git reset --hard

它将删除工作目录和登台区域中的所有修改。


#4楼

原始海报指出:

有人可以给我的最佳答案是使用git revert X次,直到达到所需的提交。

假设我想恢复为20提交的旧提交,我必须运行20次。

有没有更简单的方法可以做到这一点?

我无法使用重置,因为此回购是公开的。

不必使用git revert X次。 git revert可以接受提交范围作为参数,因此您只需要使用一次即可恢复提交范围。 例如,如果您想还原最近的20次提交:

git revert --no-edit HEAD~20..

提交范围HEAD~20..HEAD HEAD~20..HEAD~20..HEAD ,表示“从HEAD提交的 20 父级开始,并将所有提交恢复到HEAD”。

假设所有这些都不是合并提交 ,它将还原最后20次提交。 如果存在合并提交,那么您将无法在一个命令中全部还原它们,需要使用以下命令分别还原它们:

git revert -m 1 <merge-commit>

还要注意,我已经使用git版本1.9.0在git revert范围内进行了测试。 如果您使用的是git的旧版本,则使用带有git revert的范围可能有效,也可能无效。

在这种情况下, git revert优于git checkout

请注意,与使用git checkout答案不同, git revert实际上将删除在您要还原的任何提交中添加的所有文件 ,这使之成为还原一系列修订版本的正确方法。

文献资料


#5楼

git read-tree -um @ $commit_to_revert_to

会做的。 这是“ git checkout”,但不更新HEAD。

您可以达到相同的效果

git checkout $commit_to_revert_to
git reset --soft @{1}

如果您更喜欢将便捷命令串在一起。

这些使您的工作树和索引处于所需的状态,您只需git commit即可完成。


#6楼

第1步:获取提交列表:

git log

您将在此示例中获得列表:

[Comp:Folder User$ git log
commit 54b11d42e12dc6e9f070a8b5095a4492216d5320
Author: author <author@gmail.com>
Date:   Fri Jul 8 23:42:22 2016 +0300This is last commit messagecommit fd6cb176297acca4dbc69d15d6b7f78a2463482f
Author: author <author@gmail.com>
Date:   Fri Jun 24 20:20:24 2016 +0300This is previous commit messagecommit ab0de062136da650ffc27cfb57febac8efb84b8d
Author: author <author@gmail.com>
Date:   Thu Jun 23 00:41:55 2016 +0300This is previous previous commit message
...

步骤2:复制所需的提交哈希并将其粘贴以进行结帐:

git checkout fd6cb176297acca4dbc69d15d6b7f78a2463482f

就这样。


#7楼

我不确定发生了什么更改,但是如果没有--detach选项,我将无法检出特定的提交。 对我git checkout --detach [commit hash]的完整命令是: git checkout --detach [commit hash]

为了脱离分离状态,我必须检出本地分支: git checkout master


#8楼

假设您在一天左右的时间内从事一个项目。 您会注意到一项功能仍在给您错误。 但是您不知道所做的更改导致了错误。 因此,您必须钓鱼以前的工作提交。 要还原为特定的提交,请执行以下操作:

git checkout 8a0fe5191b7dfc6a81833bfb61220d7204e6b0a9 .

好的,这样提交就可以为您工作。 没有更多的错误。 您指出了问题所在。 现在您可以返回到最新提交:

git checkout 792d9294f652d753514dc2033a04d742decb82a5 .

并在导致错误之前检出特定文件(在我的情况下,我使用示例Gemfile.lock):

git checkout 8a0fe5191b7dfc6a81833bfb61220d7204e6b0a9 -- /projects/myproject/Gemfile.lock

这是处理在提交中创建的错误而不等到以后才意识到的一种方法。


#9楼

这是一个例子

    cd /yourprojects/project-acme git checkout efc11170c78 .

#10楼

要HEAD分离模式吗?

如果您希望将X时间回退到带有DETACHED HEAD的某个提交(这意味着您什么都不会弄乱),那么请务必使用以下命令:

(用您希望返回的提交数替换X)

git checkout HEAD~X

IE浏览器回退一次提交:

git checkout HEAD~1

#11楼

您可以在GitHub / BitBucket / Gitlab的commits部分中找到与每个提交相关的提交ID。 非常简单,假设您的提交ID为5889575,那么如果您想返回到代码的这一部分,则只需键入

git checkout 5889575 .

这将带您到达代码中的那个时间点。

回滚到公共回购中的旧Git提交相关推荐

  1. git 回滚到某个commit_Git 整理 v1.0 | Git 操作整理进阶篇

    多选参数-小林翻唱,请多多支持,附上网易云链接:https://music.163.com/#/song?id=1441451111 0. 前言 这是程序锅对之前学习和使用 Git 做的一份整理,后头 ...

  2. IDEA中项目集成git提交代码详细步骤

    简介:在团队协作开发的过程中,好的代码管理能更加有效的使日常开发的过程中对各个开发人员提高开发速度.下面将详细介绍在IDEA中使用git提交代码的过程: IDEA中使用git提交代码 一:pull代码 ...

  3. idear中如何把git 提交变成svn提交代码

    提交代码方式转换(git.svn) 1.在项目的.idea目录中可以找到一个vcs的文件配置 2.将里面的git变成svn就Ok了 <?xml version="1.0" e ...

  4. git让单个文件回滚到指定版本

    https://blog.csdn.net/fsgsggd/article/details/79875035 首页 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITey ...

  5. 回滚master代码_[转]Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)...

    两种情况(场景) 情况一 代码还只在本地,未push到运程仓库,想把代码还原到上一次commit的代码,此时操作为代码撤销 解决方案: 情况二 代码已经push到运程仓库,想把代码还原到上一次提交,此 ...

  6. GitLab代码回滚到特定版本

    用命令行打开git项目路径,切换到自己所在的分支. git branch 查看本地分支 git branch -a 查看远端分支 git checkout -b dev origin/dev  切换到 ...

  7. git hok json_从战中反弹:将Git提交信息作为JSON返回

    git hok json 在某些情况下,我们必须知道部署到远程服务器的Web应用程序的确切版本. 例如,客户可能想知道我们是否已经在服务器X上部署了错误修复程序. 当然,我们可以尝试使用"传 ...

  8. 从战中反弹:将Git提交信息作为JSON返回

    在某些情况下,我们必须知道部署到远程服务器的Web应用程序的确切版本. 例如,客户可能想知道我们是否已经在服务器X上部署了错误修复程序. 当然,我们可以尝试使用"传统"方法找到该问 ...

  9. git分支管理和git提交规范

    一.git分支管理 最基本的一般情况下的分支管理如下(有些公司会比较复杂,分支管理会根据不同项目而定): master分支:生产环境分支,一般用于存放正式环境上的代码,每次发版到正式时才更新,其他时间 ...

最新文章

  1. tkinter笔记:scale 尺度 (莫烦python笔记)
  2. 全球及中国新能源汽车产业应用现状与运营前景规划报告2022版
  3. mysql 使用sum limit_mysql踩坑记录之limit和sum函数混合使用问题
  4. Excel和Word 简易工具类,JEasyPoi 2.1.7 版本发布
  5. c语言 静态断言,C断言/静态断言
  6. 实现随着 下拉菜单中 选中值的变化 周边的值也也跟着变化。(使用【 VLOOKUP 】 函数)
  7. HDU1287+枚举
  8. apt-get 与 yum 的区别
  9. mac 安装 brew 镜像
  10. 2020线性代数辅导讲义练习答案
  11. PostgreSQL 10.1 手册
  12. python色彩变换CMYK,RGB,HSI
  13. 从程序员的角度来看为什么我们需要工作流
  14. appinventor数学小程序计算机,APP inventor中的颜色
  15. 微信小程序中显示换行、空格
  16. 引用拷贝、对象拷贝、浅拷贝、深拷贝 到底是什么【详细例子介绍】
  17. Tailwind Sidebar
  18. cad快捷图标中的启动参数
  19. hudson插件开发入门
  20. C# 仿360悬浮球开发demo程序

热门文章

  1. HIDL示例-C++服务创建Client验证-Android10.0 HwBinder通信原理(三)
  2. percona mysql安装_mysql 安装 (percona)
  3. android系统应用开发_利用ADB工具免root停用Android系统应用
  4. Flutter开发之路由跳转与传参(七)
  5. swift_025(Swift 的自动引用计数(ARC)
  6. 用jk触发器构成二分频电路_实例分析,轻松掌握声控照明电路
  7. uni-app如何取消pages页面的默认返回按钮【autoBackButton属性】
  8. poj1002 字符串
  9. AttributeError:module 'numbers' has no attribute 'Integral'.
  10. Python【Python基础】