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

需求

基于以前的仓库重新开发,这样可保留以前的配置等文件,但是需要删除全部的历史记录、tag、分支等。

方案

  1. 创建新的分支

    使用 --orphan 选项,可创建1个干净的分支(无任何的提交历史,但是当前分支的内容一应俱全)。但严格意义上说,这样创建的分支还不是一个真正的分支,因为 HEAD 指向的引用中没有 commit 值,只有在进行一次提交后,它才算得上真正的分支。

    git checkout --orphan new_branch
    
  2. 添加所有文件

    git add .
    
  3. 提交代码

    git commit -m '新仓库'
    
  4. 删除原来的主分支 master

    一般仓库默认的主分支为 master 分支,如果原来的主分支不是 master, 用实际的主分支名代替。

    git branch -D master
    
  5. 把当前分支重命名为 master

    git branch -m master
    
  6. 最后把代码推送到远程仓库

    有些仓库有 master 分支保护,不允许强制 push,需要在远程仓库项目里暂时把项目保护关掉才能推送。
    推送前需要使用 git remote -v 查看关联的远程仓库的信息(主要是远程库的别名)。虽然远程库的别名默认是 origin ,但你可能设置过其他的别名(而非 origin)。

    git push -f origin master
    
  7. 测试仓库是否可用

    git pull
    

    如果别人不能拉取代码,可以使用

    git pull -r
    
  8. 测试提交历史是否清除

    # 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 命令解决

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐