git,彻底清除一个分支中所有历史提交记录

彻底清除一个分支中所有的历史提交记录,成为一个干净的分支

简述思路

新建一个干净的分支,然后把希望清楚历史记录的分支删了,重命名这个干净的分支为旧分支的名字。

切换分支

首先要先切换到自己要清除历史提交记录的分支(本文以 main 分支为例)

1
git checkout main

创建新分支

1
git checkout --orphan <new_branch>

--orphan 的作用有两个:

  1. 拷贝当前所在分支的所有文件。
  2. 与当前分支没有任何共同的提交历史。

但严格意义上说,这样创建的分支还不是一个真正的分支,因为HEAD指向的引用中没有commit值,只有在进行一次提交后,它才算得上真正的分支。

当前状态下暂存区是完全清空的,所以这个时候即使你删除或者添加了拷贝过来的文件也不会留下 delete 或者 add 的记录, 和新建仓库中第一个分支的状态是一样的。

接着添加提交,步骤没有什么特别要注意的,按你习惯的方式来。

1
2
3
git add .
# 或 git add -A
git commit -m "自定义提交说明"

删除原来的分支

(注:本文以 main 分支为例)

1
git branch -D main

把当前分支重命名

(注:本文以 main 分支为例)

1
git branch -m main

把代码推送到远程仓库(可选)

如果要推的话就推一下

1
2
3
git push origin BranchName
# 强制推送
git push -f origin BranchName

其他常用命令

1.查看提交日志

1
git log --pretty=oneline

2.查看分支信息

列出所有本地分支

1
git branch

列出所有远程分支

1
git branch -r

列出所有本地分支和远程分支

1
git branch -a

3.查看 tag 信息

查看本地标签

1
git tag

查看远程标签

1
git ls-remote --tags

4.将本地分支与远程分支建立关联

1
git branch --set-upstream-to=origin/BranchName BranchName

5.删除远程分支

1
git push origin --delete remoteBranchName

注意如果删除的是default branch,需要在github网页的设置界面中先修改默认分支。

参考

如何创建空白git分支

彻底清除git所有历史提交记录使其为新库

Licensed under CC BY-NC-SA 4.0
Sow nothing, reap nothing.
Built with Hugo 主题 StackJimmy 设计