1. 如何删除一个commit到本地的分支
1.1 使用git reset
git-01.pnggit log
首先查看提交日志,找到commitId,
git-02.pnggit-03.pnggit reset --hard <commitId>
如果是本地分支到这里,分支就已经改变了,后提交的分支就都没有了。
git-04.png如果是远程分支,
git-05.png还需要执行命令行
git-06.pnggit push origin HEAD --force
可以看到远程的也更改了
git-07.png1.2 使用git rebase
git-08.pnggit-rebase操作起来要比git-reset高级的多,例如如果你有三次提交commit 1,commit 2,commit 3,只想删除commit 2操作,如果使用reset的方式,commit 3的提交记录也会消失。
使用git rebase步骤如下:
git-09.pnggit log
git-10.pnggit rebase -i <pre-commitId>
这里的pre-commitId指的是你想删除的commit的前一次提交commitId。执行完这个会进入文本编辑页面,
git-11.png你需要修改记录文件里面的pick为drop,也就是放弃这个commit。
git-12.png然后保存并退出。
git-13.png如果是远程的分支同样执行
git-15.pnggit push origin HEAD --force
需要特别留意的是,可能会发生冲突。发生冲突先解决冲突,然后点击Continue rebase,会依次执行合并后续的commit,一直到最新的commit,
git-14.png这时执行命令
git rebase --continue
执行完之后,刷新看到commit 2的提交内容已经没有了。
git-16.png但是这个操作看起来风险很大,如果要去掉中间某一个commit的代码,最好还是使用revert,简单暴力,缺点就是提交记录会保留着,不好看。
2. 如何恢复已经删除的分支
git-17.pnggit reflog
获取到需要找回commit的delete-commit-id,
git reset --hard <delete-commit-id>
这样删除的commit就会出现在版本控制下,
git push origin HEAD --force
更新远程的记录。
网友评论