美文网首页
彻底清除git所有历史提交记录使其为“新”库

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

作者: 萌木盖 | 来源:发表于2021-11-04 14:40 被阅读0次

文章目录

背景
清除 git 所有历史提交记录方案
清除 git 所有记录的 bat 批处理脚本

背景

以前开发中未制定、遵循 git 管理项目标准,随意(不规范)的提交 严重“污染了”提交历史,使开发主线 “脏乱”;
基于以前的仓库重新开发,这样可保留以前的配置等文件,但是需要删除全部的历史记录、tag、分支等;
由于自己或其他方面特殊需求,需要保留仓库的部分属性(创建时间,说明,主页等),但需要清除历史记录,使其为“新库”。
基于以上3方面的需求,需要提供一个 在不删除原仓库的前提下,清除原仓库的所有历史提交记录(包含:分支、tag) 解决方案。

清除 git 所有历史提交记录方案

1.创建新分支

语法:git checkout --orphan <new_branch>
例句:git checkout --orphan latest_branch

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

注意:

新的分支名可以随意命名,但不能和以前的分支名冲突。这儿特别强调是因为很多人习惯默认将分支名创建为 master.
本文以 latest_branch 作为新分支名,这个名称没有任何特殊含义,你可自定义,只要保证和以后的使用一致即可。

2.添加所有文件

git add .
# 或 git add -A

3.commit代码

git commit -m "自定义提交说明"

4.删除原来的主分支(master)

git branch -D master

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

5.把当前分支重命名为master

 git branch -m master

6.最后把代码推送到远程仓库

注意: 有些仓库有 master 分支保护,不允许强制 push,需要在远程仓库项目里暂时把项目保护关掉才能推送。

git push -f origin master

注意: 推送前 需要使用 git remote -v 查看关联的远程仓库的信息(主要是远程库的别名)。虽然远程库的别名默认是 origin ,但你可能设置过其他的别名(而非 origin).

推送前,有的情况需要设置:git branch --set-upstream-to=origin/master master

7.从远程库拉取更新代码(测试)

git pull

如果别人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

可登录远程仓库再次确认。

清除 git 所有记录的 bat 批处理脚本

这儿将上面的步骤封装为 bat 批处脚本(针对windows),双击即可运行。
文件名:fetch_push_clear_all_history.bat
将文本内容保存为 UTF-8 格式,文件最好放在 git 仓库外。如果放在 git 仓库内,需要将此文件在 .gitignore中过滤。

chcp 65001
@echo off
set /p gd=输入要清除历史提交信息的仓库目录的绝对路径:
echo 待处理的路径:%gd%
set /p gm=输入提交说明:
pushd
cd /d %gd%
git checkout --orphan latest_branch
git add -A
git commit -am "%gm%"
git branch -D master
git branch -m master
git push -f origin master
git pull
echo "已清除全部的历史记录!"
echo "查看新仓库信息:"
git log --pretty=oneline
git branch -a
git tag
git ls-remote --tags
pause
popd
exit

抄袭此篇文章

相关文章

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

    文章目录 背景 清除 git 所有历史提交记录方案 清除 git 所有记录的 bat 批处理脚本 背景 以前开发中...

  • git回滚命令

    01:git log 查看提交历史。 02:git reflog 查看所有分支的所有操作记录。 03:git re...

  • Git高级命令

    命令 1:查看历史记录 git log 可以查看所有提交记录 命令 2:git commit --amend 适...

  • Git项目迁移

    为了保留历史提交记录或远程所有分支信息等,最好使用 git clone —bare old @git -> ...

  • 如何删除GitHub中的所有提交历史记录

    删除.git文件夹可能会导致git存储库中的问题。如果要删除所有提交历史记录,但将代码保持在当前状态,可以按照以下...

  • Git使用记录

    本地Git撤回提交记录 使用git log查看提交的历史记录 使用git reset --soft head~1撤...

  • git查看提交记录详情

    git 查看commit 提交记录详情 git log //查看所有的提交记录 git show //查看最新的提...

  • 05_git版本回退和版本比较

    git log git的历史提交记录 commit 后面的hash值是 git提交id git log --pre...

  • 2016-07-13 Git 基础(三)

    Git 基础 - 查看提交历史 查看提交历史 git log 如果不带任何参数的话,会按照提交时间列出所有的更新。...

  • Git 基础 - 查看提交历史

    查看提交历史 git log 命令用于查看提交历史 默认不使用参数的话,git log 会按提交时间列出所有的更新...

网友评论

      本文标题:彻底清除git所有历史提交记录使其为“新”库

      本文链接:https://www.haomeiwen.com/subject/axkkzltx.html