如无特别说明,本人的所有Git操作都是以Github为主
git 文档
https://git-scm.com/docs
本地分支删除
查看项目的分支们(包括本地和远程)
1 | $ git branch -a |
删除本地分支
1 | $ git branch -d <BranchName> |
reset 删除错误提交的commit
使用这个的前提条件是没有push,一般不建议push -fgit reset --hard <commit_id>
回退到某一版本。git reset --hard head~1
回退一个版本(数字2自然就是两个版本啦)
然后 git push --force
rebase 伪造历史
git rebase -i HEAD~10
(修改最近10个历史)
下面是rebase打开的文本里命令的提示(git是通过判断进程创建以及进程是否仍然存在来判断用户是否开始、结束编辑,所以多标签的文本编辑器会影响git判断你是否还在编辑)
1 | # p, pick <commit> = use commit |
其中每个历史里的变动占一行,我们只要改前面的pick即可,其中主用的一般是squash,squash会合并改动,再次rebase时是不会拆分的。edit则是修订历史变动里的错误。也可以改动这些变动的顺序。
需要注意的是git里以记录改动为主,如果修改历史变动是会改变现有代码的(特别是你把某个文件的最后一次commit给弄没的时候)。drop 意味着当时进行的修改也会被取消。很容易造成冲突(conflict),
所以一般是建议squash来合并commit
最后 git push --force
这个命令会把远程的彻底抹掉,出问题也会很彻底的,所以要谨慎。