不小心用自己的github账号连接上公司git远程仓库,而且还提交上去了,怎么删除掉这次提交啊
如果这次commit你彻底不想要,比如不想让它显示在提交历史中。确保还没其他人提交之前,进行强制回滚。
git reset --hard [commit-id] # 你提交的前一次commitid
git push -f origin branch-name
操作不可挽回,谨慎使用。这样做了你的提交就彻底找不回来了
撤销你之前的提交并产生一次新的提交,你的提交还会保留在提交历史中。
git revert HEAD~1 # 往前回滚N次
5 回答3k 阅读
3 回答2.8k 阅读
2 回答664 阅读✓ 已解决
551 阅读
1 回答401 阅读
先补充一下。
楼上说的那个
git reset --hard
是把 HEAD 回滚到某个 commit。如果你要回滚的 commit 是最新的,那可以这么做。同样,git reset --hard HEAD^
或者git reset --hard HEAD~1
都可以起到同样的效果。对于
git revert
就不同了。git revert
并不会 删除某条 commit,而是会创建一条新的 commit 用来回滚某条 commit 的改动。个人觉得,如果你不打算新创建 branch (然后再
cherry-pick
),那最省事儿的办法是用git rebase --onto
比如目前代码库中,
master
branch 上有如下几条 commits:你想把 D 那条 commit 删掉,前面的都要,后面的也都要。那么你应该执行:
之后,你的 commit history 就是:
然后你
git push origin master -f
就行了要注意的是,这样做会 彻底 删掉那条 commit。唯一的找回方式是通过
git reflog
。问题中你说你用自己的账户提交了。如果你只是想改下那条 commit 的 author,那对于上面的情况中的 D:
这样就行:
把 D 那条 commit 前面的 pick 改成 edit
然后
然后