【教程】如何清空一个 Git 分支的所有 Commits

很多人有一个大胆的想法,如何清空某个分支里面所有的 commit 呢?还有一个场景,不熟悉 Git 的程序员门新建分支基于某个分支创建的,但是可能这个分支的历史 Commits 是不需要的。那么,下面我就说一下如何将分支的历史 Commits 清空吧!

新建一个空白分支

首先,你应该切换到你需要清空的分支,然后执行 (我们拟定为 test 吧):

git checkout --orphan null_branch

然后你会发现,你分支下的所有文件都成了待添加状态,我们可以直接执行 git add -A 添加,然后先存在 null_branchgit commit -am "Init commit."

删除旧本地分支

git branch -D test
删除是为了将 null_branch 重命名为之前的分支名称

然后执行重命名为之前的分支名称:

git branch -m test

进行强制提交到远程仓库

git push -f origin test

可能遇到的问题

如果你使用过 GitHub 或者 SourceTree 可能会遇到:

This repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting .git/hooks/pre-push.

这样的错误,很简单,执行 rm -rf .git/hooks/pre-push 删除这个 hook 即可。

154 声望
0 粉丝
0 条评论
推荐阅读
PHP 跨域中间件 v1.3.0 发布,新增 PSR-15 和 ThinkPHP 支持啦
PHP CORS 是一个 PHP 跨域中间件,全名叫做 「PHP CORS Middleware」,专门用来处理基于 PHP 程序的 CORS 信息问题,主要针对在 PHP 程序中设置跨域信息的支持。

shiweidu2阅读 2.2k

git 常用命令 记录
有错误和改进的地方望留言,谢谢 : )顺便推荐一下,git入门教程Git 教程图解 GitPro Git 2(中文版)Git 使用Git 使用规范流程Git 工作流程Commit message 和 Change log 编写指南全局设置git config --system //...

Luff阅读 3.2k

引入钉钉机器人通知 Gitlab CI/CD 的构建状态
本篇是之前写的《利用 Gitlab CI/CD 实现自动构建,自动部署》的续篇。我们知道 Gitlab 的 Pipeline 中的 Job 执行成功或者失败之后,对应 Job 状态会改变为 passedorfailed,当 Job 的状态改变之后, 我们需要再...

陆同学1阅读 4.6k

封面图
写一个Vue DevTools,让开发体验飞一会
近年来,人们越来越关注开发者体验 (DX)。工具和框架也一直在努力改进 DX,比如这两年光速发展的Vite。在大多数人的印象中,Vite的特点是快,但是在我看来让它发展迅速并在前端构建工具占据一席之地的主要原因是...

null仔2阅读 889

封面图
git/pip/easy_install/apt代理/源设置
在公司内网环境中,访问公网往往需要经过公司的代理,对于浏览器、IDE等开发工具,都提供了设置代理的配置,而git、pip、easy_install等CLI工具,则需要通过命令或配置文件进行代理设置;对于Python、Ubuntu、Mav...

乘着风1阅读 5.5k

Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。

ThinkSNS1阅读 2.4k

一个令人惊艳的ChatGPT项目,开源了!
最近在GitHub上发现了一个爆火的开源项目。好家伙,凑近一看,居然还是由微软开源,并且和最近炙手可热的ChatGPT息息相关。项目的名字叫做:Visual ChatGPT。[链接]这个项目最早是3月上旬微软开源的,项目宣布开...

CodeSheep2阅读 1.9k

封面图
154 声望
0 粉丝
宣传栏