美文网首页Git
git 删除最后一次commit

git 删除最后一次commit

作者: yanlong107 | 来源:发表于2019-10-22 15:14 被阅读0次

    提交代码代码后, 需求发送了变更,刚刚提交没多久的commit,实现已经是不正常的,想删除这最后一次提交,应该如果处理呢?

    先说结论

    撤销远程的commit, 可以分为两个部分
    1,第一个部分和前面的操作一样,使用git reset --hard 目标commit 回滚到指定的。
    2,使用 git push origin -f branch 强制覆盖远程仓库。(-f 有风险,请谨慎使用,master 上不到万不得已千万别用)

    操作实践

    1. 先查看当前的提交状态 (本地有两次提交,没有push到远程仓库中)
     $ git log -4
    commit 44aa1321cc3875d5eb9a41e565ec62114c2dd293 (HEAD -> branch_test)
    Author: 大龙
    Date:   Tue Oct 22 14:37:28 2019 +0800
    
        提交测试4
    
    commit c87c2cf74ca66116a32bf9f641fa3b8ad40736a5
    Author: 大龙
    Date:   Tue Oct 22 14:37:11 2019 +0800
    
        提交测试3
    
    commit dfa01a2d554913ea0e703c19c30cd01ab18fca5d (origin/branch_test)   
    Author: 大龙
    Date:   Tue Oct 22 13:24:57 2019 +0800
    
        提交测试2
    
    commit 5aa83e58721548f477af3bb23cb547494559dca4
    Author: 大龙
    Date:   Tue Oct 22 13:14:23 2019 +0800
    
        提交测试1
    
    1. 撤销本地最后一次commit (也可以撤销最后的多个提交)
    git reset --hard c87c2cf74ca66116a32bf9f641fa3b8ad40736a5(`目标的SHA1 值`)
    
    或
    
    git reset --hard HEAD^  (`HEAD后面有几个^,就是撤销到往前第几次`)
    
    

    tips:
    c87c2cf74ca66116a32bf9f641fa3b8ad40736a5

    1. 执行后,再查看一些当前的提交状态
     $ git log -3
    commit c87c2cf74ca66116a32bf9f641fa3b8ad40736a5
    Author: 大龙
    Date:   Tue Oct 22 14:37:11 2019 +0800
    
        提交测试3
    
    commit dfa01a2d554913ea0e703c19c30cd01ab18fca5d (origin/branch_test)   
    Author: 大龙
    Date:   Tue Oct 22 13:24:57 2019 +0800
    
        提交测试2
    
    commit 5aa83e58721548f477af3bb23cb547494559dca4
    Author: 大龙
    Date:   Tue Oct 22 13:14:23 2019 +0800
    
        提交测试1
    

    可以看到log中最后一个commit已经被撤销了。

    4.现在把本地的push提交到远程仓库,然后撤销远程的commit

    $ git push origin branch_test 
     $ git log -3 
    commit c87c2cf74ca66116a32bf9f641fa3b8ad40736a5 (HEAD -> branch_test, origin/branch_test)
    Author: 大龙
    Date:   Tue Oct 22 14:37:11 2019 +0800
    
        提交测试3
    
    commit dfa01a2d554913ea0e703c19c30cd01ab18fca5d
    Author: 大龙
    Date:   Tue Oct 22 13:24:57 2019 +0800
    
        提交测试2
    
    commit 5aa83e58721548f477af3bb23cb547494559dca4
    Author: 大龙
    Date:   Tue Oct 22 13:14:23 2019 +0800
    
        提交测试1
    
    1. 撤销远程的最后一次提交
    $git reset --hard HEAD^
    HEAD is now at dfa01a2 提交测试2
    $ git push -f origin branch_test 
    Total 0 (delta 0), reused 0 (delta 0)
    + c87c2cf...dfa01a2 branch_test -> branch_test (forced update)
    $git log -2
    commit dfa01a2d554913ea0e703c19c30cd01ab18fca5d (HEAD -> branch_test, origin/branch_test)
    Author: 大龙
    Date:   Tue Oct 22 13:24:57 2019 +0800
    
       提交测试2
    
    commit 5aa83e58721548f477af3bb23cb547494559dca4
    Author: 大龙
    Date:   Tue Oct 22 13:14:23 2019 +0800
    
       提交测试1
    
    $ 
    

    可以看到最后一次的commit(提交测试3) 已经不见了。

    END!

    相关文章

      网友评论

        本文标题:git 删除最后一次commit

        本文链接:https://www.haomeiwen.com/subject/yjrqvctx.html