当前位置: 首页 > news >正文

git-各种场景-撤销指令

一、撤销工作目录中的修改

1. 撤销文件的修改

如果你想撤销某个文件的修改,可以使用 git checkoutgit restore 命令:

# 使用 git checkout 撤销文件修改
git checkout -- <file># 使用 git restore 撤销文件修改
git restore <file>
2. 撤销所有文件的修改

如果你想撤销所有文件的修改,可以使用以下命令:

# 使用 git checkout 撤销所有文件修改
git checkout -- .# 使用 git restore 撤销所有文件修改
git restore .

二、撤销暂存区中的修改

1. 撤销某个文件的暂存

如果你已经将文件添加到暂存区,但想撤销这个操作,可以使用 git resetgit restore --staged 命令:

# 使用 git reset 撤销文件暂存
git reset HEAD <file># 使用 git restore --staged 撤销文件暂存
git restore --staged <file>
2. 撤销所有文件的暂存

如果你想撤销所有文件的暂存,可以使用以下命令:

# 使用 git reset 撤销所有文件暂存
git reset HEAD .# 使用 git restore --staged 撤销所有文件暂存
git restore --staged .

三、撤销最近一次的提交

如果你刚刚提交了代码,但发现有误,可以使用 git resetgit revert 命令:

1. 使用 git reset 撤销提交(保留修改)
git reset --soft HEAD~1
2. 使用 git reset 撤销提交(丢弃修改)
git reset --hard HEAD~1
3. 使用 git revert 撤销提交(生成新的反向提交)
git revert HEAD

四、修改或撤销某次提交

1. 修改最近一次提交

如果你想修改最近一次提交的信息或内容,可以使用 git commit --amend 命令:

# 修改提交信息
git commit --amend -m "新的提交信息"# 修改提交内容(需先暂存新的内容)
git add <file>
git commit --amend --no-edit
2. 撤销指定提交

如果你想撤销某次特定的提交,可以使用 git revert 命令:

git revert <commit_hash>

五、恢复删除的分支

如果你误删了一个分支,可以使用 git reflog 找到分支的最近一次提交并恢复:

# 查看 reflog 记录
git reflog# 恢复分支
git checkout -b <branch_name> <commit_hash>

六、丢弃未追踪的文件和目录

如果你想删除未追踪的文件和目录,可以使用 git clean 命令:

# 查看将删除的文件和目录
git clean -n# 删除未追踪的文件
git clean -f# 删除未追踪的文件和目录
git clean -fd

七、撤销变更记录中的合并

如果你需要撤销一次合并操作,可以使用 git revert -m 命令:

# 撤销合并提交
git revert -m 1 <merge_commit_hash>

八、总结

Git 提供了丰富的撤销和恢复操作的命令,适用于各种场景。无论是撤销工作目录中的修改、暂存区中的修改,还是撤销提交、恢复分支,Git 都能提供相应的解决方案。熟练掌握这些命令,不仅可以提高工作效率,还能减少出错的风险。

希望这篇文章对你理解和使用 Git 的撤销指令有所帮助。如果你有任何疑问或想进一步探讨的内容,欢迎在评论区留言!

个人名言:通过分享专业的技术知识和实践经验,助力更多开发者成长。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 文件IO(Ubuntu)
  • TypeScript与面向对象编程
  • Flutter动画详解第二篇之显式动画(Explicit Animations)
  • ArduPilot开源代码之AP_DAL_RangeFinder
  • 详解数据结构之队列、循环队列(源码)
  • filebeat,kafka,clickhouse,ClickVisual搭建轻量级日志平台
  • 【Spring Security】初识Spring Security
  • Web 3.0革新:社交金融与边玩边赚开启用户数据主权时代
  • Spring Data Jpa 原生SQL联表查询返回自定义DTO
  • 低空经济未来出行,evtol飞行器技术前景分析
  • 三字棋游戏(C语言详细解释)
  • layui 监听弹窗关闭并刷新父级table
  • 应用层——HTTP
  • 42、PHP 实现把二叉树打印成多行
  • 【补】【康复学习--LeetCode每日一题】1186. 删除一次得到子数组最大和
  • #Java异常处理
  • 78. Subsets
  • express + mock 让前后台并行开发
  • jquery ajax学习笔记
  • nodejs:开发并发布一个nodejs包
  • PHP变量
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 阿里云前端周刊 - 第 26 期
  • 半理解系列--Promise的进化史
  • 彻底搞懂浏览器Event-loop
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 聊聊redis的数据结构的应用
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 深入浅出Node.js
  • 数据仓库的几种建模方法
  • 通信类
  • 一道面试题引发的“血案”
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • Hibernate主键生成策略及选择
  • linux 淘宝开源监控工具tsar
  • #define与typedef区别
  • #pragma 指令
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (七)理解angular中的module和injector,即依赖注入
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • .gitignore文件设置了忽略但不生效
  • .NET Framework 服务实现监控可观测性最佳实践
  • .Net IE10 _doPostBack 未定义
  • .net 调用海康SDK以及常见的坑解释
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET中使用Redis (二)
  • .project文件
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [Android]通过PhoneLookup读取所有电话号码
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标