Git清除某文件所有历史提交记录

一、软件要求

1.1 软件版本要求
  • git >= 2.22.0
  • python3 >= 3.5
1.2 辅助插件 git filter-repo
  • Linux/macOS
# Debian/Ubuntu 系统
# 或使用 pip 安装pip install git-filter-repo
sudo apt install git-filter-repo  
  • Windows
pip install git-filter-repo

二、操作步骤

# 清除文件commons-core/application.yaml所有提交记录
# 命令描述:
#    —path:指定要删除的文件路径。
#    —invert-paths:删除指定路径的文件,并保留其他文件的历史记录。
# 注意:
# 1.此操作为去除远程源信息,操作完成后需要重新添加远程仓库地址
# 2.此操作不仅会清除历史提交记录,还会删除指定文件,请提前做好相关备份
git filter-repo --path commons-core/application.yaml --invert-paths --force

# 清理临时文件
rm -rf .git/filter-repo/

# 添加远程仓库地址
git remote add origin http://gitlab.xx.com/xxx/lang/commons-bom.git

# 强制推送到远程仓库
git push origin --force --all
git push origin --force --tags


# 验证:尝试获取该文件提交记录
git log -- commons-core/application.yaml
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指针回退到某个提交,但会丢弃之后的所有更改,这不是完全清除历史,而是修改了工作树。 **注意事项:** - 删除提交是不可逆的操作,一旦删除,就无法通过原路找回。 - 对于团队协作项目,未经其他成员同意就删除历史可能会导致混乱,应避免随意清除他人贡献的提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值