Git清除所有历史记录

有些时候,git 仓库累积了太多无用的历史更改,导致 clone 文件过大。如果确定历史更改没有意义,可以采用下述方法清空历史,

1) 先 clone 项目到本地目录(此步骤可省略)

$ git clone git@gitee.com:jiasxin/cloud-parent.git


2) 进入工程,拉一个分支,比如名为 latest_branch

$ git checkout --orphan latest_branch


3) 添加所有文件到上述分支 (Optional)

$ git add -A


4) 提交一次

$ git commit -am "Initial commit."


5) 删除 master 分支

$ git branch -D master


6) 更改当前分支为 master 分支

$ git branch -m master


7) 将本地所有更改 push 到远程仓库

$ git push -f origin master


8) 关联本地 master 到远程 master

$ git branch --set-upstream-to=origin/master


注意:对 gitee 用户,因为 gitee 目前限制单个仓库大小为 1024 MB,清除完历史记录后,还要去项目主页 Settings 下做一下 Git GC。

 

 

Git是一个分布式版本控制系统,它默认并不会自动清除提交历史记录。然而,在某些特定场景下,开发者可能会想要隐藏或删除一些敏感信息或错误的提交,这时可以使用几种方法: 1. **`git rebase -i`**: 这是一个交互式的命令,允许你在提交列表中选择需要编辑(比如删除)的提交。进入rebase模式后,你可以标记那些你想保留的提交,并移除其余的。操作完成后,只需保存并退出编辑即可。 ```shell git rebase -i HEAD~n # n是你想处理的历史提交数 ``` 2. **`git filter-branch`**: 如果你需要永久地从历史中消除某次提交,可以使用这个命令,但它会创建新的分支,原始分支不受影响。这通常用于敏感信息泄漏修复等场合,需要谨慎操作。 ```shell git filter-branch --cached --ignore-unmatch file-to-delete' --prune-empty --tag-name-filter cat -- --all ``` 3. **`.gitattributes` 文件**:可以设置某些文件的内容忽略添加到版本库,但这不会真正删除历史记录,只是不再跟踪。 4. **`git reset`**: 可以将HEAD指针回退到某个提交,但会丢弃之后的所有更改,这不是完全清除历史,而是修改了工作树。 **注意事项:** - 删除提交是不可逆的操作,一旦删除,就无法通过原路找回。 - 对于团队协作项目,未经其他成员同意就删除历史可能会导致混乱,应避免随意清除他人贡献的提交。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心歌技术

打赏不能超过你的早餐钱!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值