改完bug准备下班,突然发现提交的代码本地编译不过。为了不被骂,马上就将提交的东西abandon掉。
具体情况:
已经push至远程服务器,但是代码暂时没有通过审核,实际上并不算真正的push上去了。
本地的commit记录还在,需要将本地commit的记录撤销掉,同时还原文件内容。
解决方案:
使用git reset 命令,后面的参数可以选择:
参数 | 意义 |
--soft | 不删除工作空间的改动代码 ,撤销commit,不撤销git add file |
--hard | 删除工作空间的改动代码,撤销commit且撤销add |
完整命令:
git reset --hard HEAD~1
HEAD~1表示撤销最后一次commit,同理HEAD~2表示撤销最后两次commit。
其他情况:
之前还遇见一次已经成功push的代码,但是后面测试又跑出问题了,挺严重的,一个模块出问题导致整个项目都停滞,多亏组长立即帮忙搞定,我也不知道咋弄的。一顿操作猛如虎,没看懂。事后百度一波,拿自己的仓库做个实验,似乎和上面一样。
此外还遇到一些commit记录信息不规范的情况,是不必撤销的,commit信息可以直接修改。、
以及利用rebase打造线性提交历史等等。