不小心将测试代码提交到生产环境?别慌,教你 6 种方法秒解决!
阅读本文大概需要 2.8 分钟。
Git 版本管理时,往往需要撤销某些操作。
一、撤销提交
$ git revert HEAD
git revert
命令只能抵消上一个提交,如果想抵消多个提交,必须在命令行依次指定这些提交。比如,抵消前两个提交,要像下面这样写。$ git revert [倒数第一个提交] [倒数第二个提交]
git revert
命令还有两个参数。--no-edit
:执行时不打开默认编辑器,直接使用 Git 自动生成的提交信息。--no-commit
:只抵消暂存区和工作区的文件变化,不产生新的提交。
二、丢弃提交
$ git reset [last good SHA]
git reset
的原理是,让最新提交的指针回到以前某个时点,该时点之后的提交都从历史中消失。git reset
不改变工作区的文件(但会改变暂存区),--hard
参数可以让工作区里面的文件也回到以前的状态。$ git reset --hard [last good SHA]
git reset
命令之后,如果想找回那些丢弃掉的提交,可以使用git reflog
命令,具体做法参考这里。不过,这种做法有时效性,时间长了可能找不回来。三、替换上一次提交
git commit
命令的 --amend
参数,可以修改上一次的提交信息。$ git commit --amend -m "Fixes bug #42"
--amend
不仅可以修改提交信息,还可以整个把上一次提交替换掉。四、撤销工作区的文件修改
git checkout
命令找回本次修改之前的文件。$ git checkout -- [filename]
注意,工作区的文件变化一旦被撤销,就无法找回了。
五、从暂存区撤销文件
$ git rm --cached [filename]
六、撤销当前分支的变化
# 新建一个 feature 分支,指向当前最新的提交
# 注意,这时依然停留在当前分支
$ git branch feature
# 切换到这几次提交之前的状态
$ git reset --hard [当前分支此前的最后一次提交]
# 切换到 feature 分支
$ git checkout feature
本文转载自:「阮一峰的网络日志」,原文:https://url.cn/5NLK2pC,版权归原作者所有。
推荐阅读:
内容包含Java基础、JavaWeb、MySQL性能优化、JVM、锁、百万并发、消息队列、高性能缓存、反射、Spring全家桶原理、微服务、Zookeeper、数据结构、限流熔断降级......等技术栈!
⬇戳阅读原文领取! 朕已阅
评论