git 代码回退

!推荐git revert!

问题1:git reset 和 git revert 区别?

git revert : 用一次新的commit来回滚之前的commit.

git reset : 直接删除指定的commit.

1、在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。

2、git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容

结论:

        如果是自己的分支,当前的提交没有被其他的分支拉取,直接git reset.

        如果是develop分支或者要撤销的提交被其他分支拉取过,用git revert.

问题2:提代码后,如何撤销commit?

原生方式

        

        git reset --soft HEAD^

                回退多个  git reset --soft HEAD~n

        或

        git revert <commit id>

                (需要手动提交)回退多个  git revert -n def456..jkl012 

idea方式        

        git --> reset Head --> Reset Type 选择 soft -> To Commit 选择 HEAD^1

        或

       打开git提交历史记录-->Revert Commit

Git Reset 参数

工作区 - 暂存区 - 本地仓库

代码编写及修改是在工作区  - git add 将本地修改添加到暂存区 - git commit  将暂存区中的内容提交到本地仓库

--mixed

git reset的默认参数,即不添加参数的默认值
意思是:不删除工作空间改动代码,撤销commit 和 撤销git add . 操作,回退到工作区

--soft (推荐)

不删除工作空间改动代码,撤销commit,不撤销git add . 操作,

回退到git commit之前,此时处在暂存区。(即执行git add 命令后)

--hard

删除本地改动代码,撤销commit,撤销git add . 

三者的改变全都丢失,即代码的修改内容丢失,直接回退到某个版本;因此我们修改过的代码就没了,需要谨慎使用)

如果你的类型选择的 Hard类型, 此时整个代码空间的代码都会被覆盖,意思就是你修改过的代码全部都没有了

参考链接:

git revert命令|极客教程 (geek-docs.com)

idea git commit之后,想撤销commit_idea git提交了多次记录想删除其中一次-CSDN博客

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值