不小心将测试代码提交到生产环境的解决方案

举报
程序员小假 发表于 2025/06/24 13:45:48 2025/06/24
【摘要】 一、撤销提交一种常见的场景是,提交代码以后,突然意识到这个提交有问题,应该撤销掉,这时执行下面的命令就可以了。$ git revert HEAD上面命令的原理是,在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化。它不会改变过去的历史,所以是首选方式,没有任何丢失代码的风险。git revert 命令只能抵消上一个提交,如果想抵消多个提交,必须在命令行依次指定这些提交。比如,抵消前...

一、撤销提交

一种常见的场景是,提交代码以后,突然意识到这个提交有问题,应该撤销掉,这时执行下面的命令就可以了。

  1. $ git revert HEAD

上面命令的原理是,在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化。它不会改变过去的历史,所以是首选方式,没有任何丢失代码的风险。
git revert 命令只能抵消上一个提交,如果想抵消多个提交,必须在命令行依次指定这些提交。比如,抵消前两个提交,要像下面这样写。

  1. $ git revert [倒数第一个提交] [倒数第二个提交]

git revert 命令还有两个参数。

  • --no-edit:执行时不打开默认编辑器,直接使用 Git 自动生成的提交信息。
  • --no-commit:只抵消暂存区和工作区的文件变化,不产生新的提交。 

    二、丢弃提交

    如果希望以前的提交在历史中彻底消失,而不是被抵消掉,可以使用 git reset 命令,丢弃掉某个提交之后的所有提交。
    1. $ git reset [last good SHA]
    git reset 的原理是,让最新提交的指针回到以前某个时点,该时点之后的提交都从历史中消失。
    默认情况下,git reset 不改变工作区的文件(但会改变暂存区),--hard 参数可以让工作区里面的文件也回到以前的状态。
    1. $ git reset --hard [last good SHA]
    执行 git reset 命令之后,如果想找回那些丢弃掉的提交,可以使用 git reflog 命令,具体做法参考这里。不过,这种做法有时效性,时间长了可能找不回来。 

    三、替换上一次提交

    提交以后,发现提交信息写错了,这时可以使用 git commit 命令的 --amend 参数,可以修改上一次的提交信息。
    1. $ git commit --amend -m "Fixes bug #42"
    它的原理是产生一个新的提交对象,替换掉上一次提交产生的提交对象。
    这时如果暂存区有发生变化的文件,会一起提交到仓库。所以,--amend 不仅可以修改提交信息,还可以整个把上一次提交替换掉。 

    四、撤销工作区的文件修改

    如果工作区的某个文件被改乱了,但还没有提交,可以用 git checkout 命令找回本次修改之前的文件。
    1. $ git checkout -- [filename]
    它的原理是先找暂存区,如果该文件有暂存的版本,则恢复该版本,否则恢复上一次提交的版本。
    注意,工作区的文件变化一旦被撤销,就无法找回了。 

    五、从暂存区撤销文件

    如果不小心把一个文件添加到暂存区,可以用下面的命令撤销。
    1. $ git rm --cached [filename]
    上面的命令不影响已经提交的内容。 

    六、撤销当前分支的变化

    在当前分支上做了几次提交,突然发现放错了分支,这几个提交本应该放到另一个分支。 ```bash

    新建一个 feature 分支,指向当前最新的提交

    注意,这时依然停留在当前分支

    $ git branch feature

切换到这几次提交之前的状态

$ git reset —hard [当前分支此前的最后一次提交]

切换到 feature 分支

$ git checkout feature ``` 上面的操作等于是撤销当前分支的变化,将这些变化放到一个新建的分支。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。