回滚到公共回购中的旧Git提交
我该如何回滚到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楼
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
...
git checkout fd6cb176297acca4dbc69d15d6b7f78a2463482f
#7楼
为了脱离分离状态,我必须检出本地分支: 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的某个提交(这意味着您什么都不会弄乱),那么请务必使用以下命令:
git checkout HEAD~X
git checkout HEAD~1
#11楼
git checkout 5889575 .
回滚到公共回购中的旧Git提交相关推荐
- git 回滚到某个commit_Git 整理 v1.0 | Git 操作整理进阶篇
多选参数-小林翻唱,请多多支持,附上网易云链接:https://music.163.com/#/song?id=1441451111 0. 前言 这是程序锅对之前学习和使用 Git 做的一份整理,后头 ...
- IDEA中项目集成git提交代码详细步骤
简介:在团队协作开发的过程中,好的代码管理能更加有效的使日常开发的过程中对各个开发人员提高开发速度.下面将详细介绍在IDEA中使用git提交代码的过程: IDEA中使用git提交代码 一:pull代码 ...
- idear中如何把git 提交变成svn提交代码
提交代码方式转换(git.svn) 1.在项目的.idea目录中可以找到一个vcs的文件配置 2.将里面的git变成svn就Ok了 <?xml version="1.0" e ...
- git让单个文件回滚到指定版本
https://blog.csdn.net/fsgsggd/article/details/79875035 首页 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITey ...
- 回滚master代码_[转]Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)...
两种情况(场景) 情况一 代码还只在本地,未push到运程仓库,想把代码还原到上一次commit的代码,此时操作为代码撤销 解决方案: 情况二 代码已经push到运程仓库,想把代码还原到上一次提交,此 ...
- GitLab代码回滚到特定版本
用命令行打开git项目路径,切换到自己所在的分支. git branch 查看本地分支 git branch -a 查看远端分支 git checkout -b dev origin/dev 切换到 ...
- git hok json_从战中反弹:将Git提交信息作为JSON返回
git hok json 在某些情况下,我们必须知道部署到远程服务器的Web应用程序的确切版本. 例如,客户可能想知道我们是否已经在服务器X上部署了错误修复程序. 当然,我们可以尝试使用"传 ...
- 从战中反弹:将Git提交信息作为JSON返回
在某些情况下,我们必须知道部署到远程服务器的Web应用程序的确切版本. 例如,客户可能想知道我们是否已经在服务器X上部署了错误修复程序. 当然,我们可以尝试使用"传统"方法找到该问 ...
- git分支管理和git提交规范
一.git分支管理 最基本的一般情况下的分支管理如下(有些公司会比较复杂,分支管理会根据不同项目而定): master分支:生产环境分支,一般用于存放正式环境上的代码,每次发版到正式时才更新,其他时间 ...
最新文章
- tkinter笔记:scale 尺度 (莫烦python笔记)
- 全球及中国新能源汽车产业应用现状与运营前景规划报告2022版
- mysql 使用sum limit_mysql踩坑记录之limit和sum函数混合使用问题
- Excel和Word 简易工具类,JEasyPoi 2.1.7 版本发布
- c语言 静态断言,C断言/静态断言
- 实现随着 下拉菜单中 选中值的变化 周边的值也也跟着变化。(使用【 VLOOKUP 】 函数)
- HDU1287+枚举
- apt-get 与 yum 的区别
- mac 安装 brew 镜像
- 2020线性代数辅导讲义练习答案
- PostgreSQL 10.1 手册
- python色彩变换CMYK,RGB,HSI
- 从程序员的角度来看为什么我们需要工作流
- appinventor数学小程序计算机,APP inventor中的颜色
- 微信小程序中显示换行、空格
- 引用拷贝、对象拷贝、浅拷贝、深拷贝 到底是什么【详细例子介绍】
- Tailwind Sidebar
- cad快捷图标中的启动参数
- hudson插件开发入门
- C# 仿360悬浮球开发demo程序
热门文章
- HIDL示例-C++服务创建Client验证-Android10.0 HwBinder通信原理(三)
- percona mysql安装_mysql 安装 (percona)
- android系统应用开发_利用ADB工具免root停用Android系统应用
- Flutter开发之路由跳转与传参(七)
- swift_025(Swift 的自动引用计数(ARC)
- 用jk触发器构成二分频电路_实例分析,轻松掌握声控照明电路
- uni-app如何取消pages页面的默认返回按钮【autoBackButton属性】
- poj1002 字符串
- AttributeError:module 'numbers' has no attribute 'Integral'.
- Python【Python基础】