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

最常见的 Git 错误及解决方法

最常见的 Git 错误及解决方法

经常用 Git,哪能不出错。

恢复时要注意 log 的时间,以及查看是否有别人操作的代码,尤其是 push revert,用 IDEA 中的工具查看比较直观。先在一个小项目自己动手测试一下,博客不能解决所有问题。

1、修改最后一次提交消息 - 提交消息写错了

解决方法:

git commit --amend

该命令将打开编辑器,并允许更改最后一次提交消息。

(按 i 进行编辑,编辑后,按 ESC,如果保存退出使用 :wq,只退出输入 :q,如果出错,退出不保存使用 :qa!)

2、Git 撤回 commit,但未 push 的内容

查看本地修改日志:

git log

(如果显示不全按回车键继续加载,按 q 退出;中文可能乱码;越靠上的是越近的修改)

(1)如果想保留提交之前的更改,使用 reset + id
(一般有两条,如果显示不全按回车键继续加载,按 q 退出,就是立马知道要撤回,既然上面的最新的 ID,那么 reset 使用的是下面的 ID)

git reset *******

(2)如果想要撤回,并且删除上次提交所做的修改(请确认场景,慎用),使用 --hard

git reset --hard **********

注意 --hard 参数会抛弃当前工作区的修改;
使用 --soft 参数的话会回退到之前的版本,但是保留当前工作区的修改,可以重新提交

3、撤回已经 push 的更改(revert 时要清楚对那些文件)

查看本地修改日志:

git log

(如果显示不全按回车键继续加载,按 q 退出;中文可能乱码;越靠上的是越近的修改)

注意:使用 revert 时要注意这里是用上面的版本号,不是下面的版本号,区别于 reset

git revert HEAD        #撤销前一次提交
git revert HEAD^       #撤销前前一次提交
git revert ***********  #撤销指定版本提交。

(1)git revert 不会回退到暂存区中,所以使用 git status 没有变化(体现为没有颜色)
(2)revert 之后是处于 commit 状态,即便再撤回 commit 也不能回复 revert 的那个版本修改的内容。因为 revert 会把之前的修改都删除,此时撤回 commit 仅仅是回到删除后的,未提交的状态。此时提交相当于提交 revert 执行删除。
(3)commit 状态就是说仅仅是你的版本 revert 了,远程没有,如果再 push,就把远程的也 revert 了。

4、修改分支名称 - 错误拼写的分支名

使用:

//git branch -m 错误的分支名 正确的分支名
git branch -m brunch-xpw branch-xpw

如果已经推送此分值,则需要执行几个额外的步骤。需要删除旧分支并推送新分支

git push origin --delete brunch-xpw
git push origin branch-xpw
5、不小心提交到主分支 - 忘记创建新分支

比如说开发了新功能,暂时不应该提交主分支,但是已经提交了。

注意: 此时要回复,就提交所有更改,如果是提交了部分更改,则回复后只有提交的部分,请确认提交了修改或者其他方式保存

git branch branch-xpw
git reset HEAD~ --hardgit checkout branch-xpw

这将创建一个新分支,然后将主分支回滚到该分支

相关文章:

  • 手写 Spring - 详细思路与实践
  • JVM 字节码指令手册 - 查看 Java 字节码
  • 浮点数为什么不精确
  • 不能使用 float 和 double 来表示金额等精确的值
  • 金额工具类
  • 为什么包装类型间的相等判断应该用 equals
  • 为什么重写 equals() 要重写 hashCode()? hashCode 值相等,两个对象不一定相等?
  • Ubuntu 18 搜狗输入法 - 输入汉字时候选栏乱码问题
  • Ubuntu 18 boot 分区空间不足-解决方法
  • CentOS7 下 Redis 的安装、配置、启动、关闭、开启远程连接
  • 告别吧 - 单链表反转(Java 实现)
  • IDEA 注释模板配置(新安装 IDEA 需要的配置)
  • MySQL 中 TIMESTAMP 类型返回日期时间数据中带有 T
  • HTML 页面跳转时传递参数(jquery.params.js)
  • Springboot 使用 Shiro 模板引擎时使用 swagger-ui 时的问题
  • Electron入门介绍
  • es6(二):字符串的扩展
  • ES6--对象的扩展
  • JavaScript的使用你知道几种?(上)
  • Javascript基础之Array数组API
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • PHP面试之三:MySQL数据库
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Vim Clutch | 面向脚踏板编程……
  • 聚类分析——Kmeans
  • 力扣(LeetCode)21
  • 前端技术周刊 2019-02-11 Serverless
  • 前端面试之闭包
  • 如何优雅地使用 Sublime Text
  • 使用common-codec进行md5加密
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 我看到的前端
  • 无服务器化是企业 IT 架构的未来吗?
  • 学习JavaScript数据结构与算法 — 树
  • 栈实现走出迷宫(C++)
  • 数据库巡检项
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #前后端分离# 头条发布系统
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (汇总)os模块以及shutil模块对文件的操作
  • (转) Android中ViewStub组件使用
  • (转)【Hibernate总结系列】使用举例
  • (转)setTimeout 和 setInterval 的区别
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转)人的集合论——移山之道
  • .cfg\.dat\.mak(持续补充)
  • .equals()到底是什么意思?
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Core跨平台微服务学习资源
  • .NET导入Excel数据
  • @Autowired @Resource @Qualifier的区别
  • @RestControllerAdvice异常统一处理类失效原因
  • @拔赤:Web前端开发十日谈