git revert

git revert 是一种创建一次新的commit 来回退某次或某几次commit的一种方式

命令

// 创建一个新的commit,这个commit会删除(下面)commit-id的内容,但会在log中保留这个commit-id
git revert commit-id // 批量回退 这个是前开后闭, 只revert了...和commit-id-end, commit-id-start没有撤销
git revert commit-id-start...commit-id-end // 加上^ 就是前闭后闭,都撤销了
git revert commit-id-start^...commit-id-end

ps: 没有git revert 文件的操作,IDEA的撤销文件修改的操作(revert)用的不是git revert

例子:

原始log

31f6a64 (HEAD -> master) 提交 3
98d937c 提交 2
af02354 提交 1

目录下的内容为:

➜  revert_test git:(master) ls
1.txt
2.txt
3.txt

现在想删除 98d937c 的提交

执行

git revert 98d937c

再看目录下的内容为:

➜  revert_test git:(master) ls
1.txt
3.txt

说明确实去掉了98d937c 的提交内容(即2.txt 不在了

再看日志:

d1ea1e9 (HEAD -> master) Revert "提交 2"
31f6a64 提交 3
98d937c 提交 2
af02354 提交 1

发现,其实是通过一次新的提交来删除98d937c 的提交内容的(这里可以看出之前的commit-id依然在)

再看批量回退

日志记录

a74b9bb (HEAD -> master) 提交 6
e3bbc59 提交 5
223171c 提交 4
d1ea1e9 Revert "提交 2"
31f6a64 提交 3
98d937c 提交 2
af02354 提交 1

现在回退 提交4 和提交5

执行

git revert 223171c^...e3bbc59

看日志

af51f68 (HEAD -> master) Revert "提交 4"
1a5d0c0 Revert "提交 5"
a74b9bb 提交 6
e3bbc59 提交 5
223171c 提交 4
d1ea1e9 Revert "提交 2"
31f6a64 提交 3
98d937c 提交 2
af02354 提交 1

产生了两次revert提交commit

最新文章

  1. sp_get_menu函数使用分析
  2. c语言运算符
  3. 将GitLab的数据库导入阿里云PostgreSQL RDS
  4. [译] Angular 2 VS. React: 血色将至
  5. 无线安全渗透测试套件WiFi-Pumpkin新版本发布
  6. jQuery代码性能小细节
  7. 火狐HACK
  8. (转)iOS Wow体验 - 第四章 - 为应用的上下文环境而设计
  9. HTML 锚点链接,链接到同一个页面的不同位置
  10. Python 正则表达式(字符)详解
  11. Floyd 算法求多源最短路径
  12. Jetson TX1使用usb camera采集图像 (1)
  13. 适用于typecho0.9的评论表情插件
  14. cpp 标准库
  15. day4_局部变量和全局变量
  16. proxy Static方式
  17. 通过MFC设计一个简单的计价程序
  18. discuz安装:mysqli_connect()不支持advice_mysqli_connect
  19. springmvc环境搭建及实例
  20. coreos 创建使用密钥登陆的ubuntu 基础镜像

热门文章

  1. ASP.NET MVC之models_list传值view
  2. React技巧之发出http请求
  3. 虚拟机使用docker 外部机器无法访问端口问题
  4. Java 集合常见知识点&面试题总结(上),2022 最新版!
  5. STC8H开发(十二): I2C驱动AT24C08,AT24C32系列EEPROM存储
  6. manjaro 安装后的基本配置
  7. RabbitMQ消费者消失与 java OOM
  8. Trie树模板2
  9. sqlDeveloper工具快速入门
  10. fill-available,min-content,max-content,fit-content的作用机制