清除 git 所有历史提交记录,使其为新库
- 需求
- 方案
需求
基于以前的仓库重新开发,这样可保留以前的配置等文件,但是需要删除全部的历史记录、tag、分支等。
方案
-
创建新的分支
使用
--orphan
选项,可创建1个干净的分支(无任何的提交历史,但是当前分支的内容一应俱全)。但严格意义上说,这样创建的分支还不是一个真正的分支,因为 HEAD 指向的引用中没有 commit 值,只有在进行一次提交后,它才算得上真正的分支。git checkout --orphan new_branch
-
添加所有文件
git add .
-
提交代码
git commit -m '新仓库'
-
删除原来的主分支 master
一般仓库默认的主分支为 master 分支,如果原来的主分支不是 master, 用实际的主分支名代替。
git branch -D master
-
把当前分支重命名为 master
git branch -m master
-
最后把代码推送到远程仓库
有些仓库有 master 分支保护,不允许强制 push,需要在远程仓库项目里暂时把项目保护关掉才能推送。
推送前需要使用 git remote -v 查看关联的远程仓库的信息(主要是远程库的别名)。虽然远程库的别名默认是 origin ,但你可能设置过其他的别名(而非 origin)。git push -f origin master
-
测试仓库是否可用
git pull
如果别人不能拉取代码,可以使用
git pull -r
-
测试提交历史是否清除
# 1.查看提交日志 git log --pretty=oneline # 2.查看分支信息 # 列出所有本地分支 git branch # 列出所有远程分支 git branch -r # 列出所有本地分支和远程分支 git branch -a # 3.查看 tag 信息 # 查看本地标签 git tag # 查看远程标签 git ls-remote --tags
若在第 6、7 步遇到类似下面的问题:
可以通过 git branch --set-upstream-to=origin/master master
命令解决