最常见的 Git 错误及解决方法
经常用 Git,哪能不出错。
恢复时要注意 log 的时间,以及查看是否有别人操作的代码,尤其是 push revert,用 IDEA 中的工具查看比较直观。先在一个小项目自己动手测试一下,博客不能解决所有问题。
解决方法:
git commit --amend
该命令将打开编辑器,并允许更改最后一次提交消息。
(按 i 进行编辑,编辑后,按 ESC,如果保存退出使用 :wq,只退出输入 :q,如果出错,退出不保存使用 :qa!)
查看本地修改日志:
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 了。
使用:
//git branch -m 错误的分支名 正确的分支名
git branch -m brunch-xpw branch-xpw
如果已经推送此分值,则需要执行几个额外的步骤。需要删除旧分支并推送新分支
git push origin --delete brunch-xpw
git push origin branch-xpw
比如说开发了新功能,暂时不应该提交主分支,但是已经提交了。
注意: 此时要回复,就提交所有更改,如果是提交了部分更改,则回复后只有提交的部分,请确认提交了修改或者其他方式保存
git branch branch-xpw
git reset HEAD~ --hardgit checkout branch-xpw
这将创建一个新分支,然后将主分支回滚到该分支