当前位置: 首页 > news >正文

git 如何彻底删除已经提交到远程仓库的文件?而不是覆盖删除?git 如何删除已经提交到本地的文件?从历史记录中彻底清除彻底删除(本地+远程)

git 如何彻底删除已经提交到远程仓库的文件?而不是覆盖删除?git 如何删除已经提交到本地的文件?

覆盖删除:

提交了某个不需要的文件,并push到了远程分支,此时在本地删除该文件,然后再提交一次。

这样的会导致远程仓库的体积不会变小,文件在某一次commit中还可以回溯到。


1、查看文件日志记录:

 git log -- <file>

2、如果只是提交到本地,还没有push到远程仓库:

git checkout -- <file>

3、 删除本地文件及Git记录

git rm <file>

4、从历史记录中彻底清除,例如前两次提交到远程分支了:

git reset HEAD^^^ data/mission.db
git commit --amend
git pull
git push


Git 在项目开发中常用的 50 种高频操作场景,覆盖日常开发、协作和高级用法的核心需求:


一、基础操作

  1. 初始化仓库

    git init
    
  2. 克隆远程仓库

    git clone https://github.com/user/repo.git
    
  3. 查看当前状态

    git status
    
  4. 添加文件到暂存区

    git add file.txt          # 添加单个文件
    git add .                # 添加所有修改
    git add *.js             # 通配符添加
    
  5. 提交修改

    git commit -m "提交说明"
    
  6. 修改最后一次提交

    git commit --amend       # 修改提交信息或追加文件
    

二、分支管理

  1. 查看所有分支

    git branch -a
    
  2. 创建新分支

    git branch feature-login
    
  3. 切换分支

    git checkout main
    git checkout -b feature-payment  # 创建并切换
    
  4. 合并分支

    git checkout main
    git merge feature-login         # 普通合并
    git merge --no-ff feature-login # 保留分支历史
    
  5. 删除分支

    git branch -d feature-old       # 安全删除
    git branch -D feature-broken    # 强制删除未合并分支
    
  6. 解决合并冲突
    手动编辑冲突文件后:

    git add resolved-file.txt
    git commit -m "解决冲突"
    
  7. 变基(Rebase)

    git checkout feature
    git rebase main           # 将 feature 分支变基到 main
    
  8. 交互式变基

    git rebase -i HEAD~3      # 修改最近 3 次提交
    

三、远程协作

  1. 关联远程仓库

    git remote add origin https://github.com/user/repo.git
    
  2. 查看远程仓库

    git remote -v
    
  3. 拉取远程更新

    git pull origin main      # 拉取并合并
    git fetch origin          # 仅获取不合并
    
  4. 推送本地提交

    git push origin main
    
  5. 删除远程分支

    git push origin --delete feature-old
    
  6. 强制推送(慎用)

    git push origin main --force
    
  7. 跟踪远程分支

    git checkout --track origin/dev
    

四、撤销与回退

  1. 撤销工作区修改

    git checkout -- file.txt
    
  2. 撤销暂存区文件

    git reset HEAD file.txt
    
  3. 回退到某次提交

    git reset --hard a1b2c3d  # 丢弃后续所有修改
    git reset --soft a1b2c3d # 保留修改到暂存区
    
  4. 回退单个文件到某版本

    git checkout a1b2c3d -- file.txt
    
  5. 撤销某次提交

    git revert a1b2c3d       # 生成反向提交
    

五、日志与对比

  1. 查看提交历史

    git log
    git log --oneline        # 简洁模式
    git log -p               # 显示差异
    git log --graph          # 图形化分支
    
  2. 查看文件修改历史

    git blame file.txt       # 逐行查看修改者
    git log -p file.txt      # 文件修改记录
    
  3. 对比工作区与暂存区

    git diff
    
  4. 对比暂存区与最新提交

    git diff --cached
    
  5. 对比两次提交

    git diff commit1 commit2
    

六、标签管理

  1. 创建标签

    git tag v1.0.0           # 轻量标签
    git tag -a v1.0.0 -m "Release"  # 附注标签
    
  2. 推送标签到远程

    git push origin --tags
    
  3. 删除标签

    git tag -d v1.0.0
    git push origin :refs/tags/v1.0.0  # 删除远程标签
    

七、忽略文件

  1. 配置 .gitignore

    # 忽略日志文件
    *.log
    # 忽略目录
    /node_modules/
    
  2. 强制添加被忽略的文件

    git add -f secret.txt
    

八、储藏与清理

  1. 临时储藏修改

    git stash
    git stash save "暂存说明"
    
  2. 恢复储藏的修改

    git stash pop        # 恢复并删除储藏
    git stash apply     # 恢复但不删除
    
  3. 清理未跟踪文件

    git clean -fd       # 强制删除未跟踪文件和目录
    

九、高级操作

  1. 子模块管理

    git submodule add https://github.com/user/lib.git
    git submodule update --init --recursive
    
  2. 二分法调试

    git bisect start
    git bisect bad      # 标记当前为错误版本
    git bisect good a1b2c3d  # 标记已知正常版本
    
  3. 重写提交信息

    git rebase -i HEAD~3  # 修改最近 3 次提交信息
    
  4. 拆分提交
    在交互式变基中使用 edit 标记提交,然后:

    git reset HEAD^     # 拆分提交内容
    git add file1.txt
    git commit -m "提交部分修改"
    git add file2.txt
    git commit -m "剩余修改"
    git rebase --continue
    
  5. 生成补丁文件

    git format-patch HEAD~2  # 生成最近 2 次提交的补丁
    
  6. 应用补丁

    git apply patch-file.patch
    

十、协作与工作流

  1. Fork 仓库协作

    # 添加上游仓库
    git remote add upstream https://github.com/original/repo.git
    # 同步上游更新
    git fetch upstream
    git merge upstream/main
    
  2. Pull Request 流程

    git checkout -b feature
    # 开发后推送到自己的远程分支
    git push origin feature
    # 在 GitHub/GitLab 创建 PR
    
  3. 同步他人分支

    git fetch origin
    git checkout -b colleague-feature origin/colleague-feature
    

十一、优化与调试

  1. 减少仓库体积

    git gc --auto       # 清理无用对象
    git repack -ad      # 重新打包对象
    
  2. 查看文件权限变化

    git config core.fileMode false  # 忽略文件权限变化
    

http://www.dtcms.com/a/122168.html

相关文章:

  • 汽车的四大工艺
  • TDengine 语言连接器(Python )
  • 达摩院Paraformer-ONNX模型:一站式高精度中文语音识别工业级解决方案
  • 物联网与边缘计算之物联网架构(感知层、网络层、应用层)
  • 什么是堆?深入理解堆数据结构及其应用
  • SSM智能停车场管理系统
  • 基于OpenCV的图像处理程序设计实践
  • dify使用知识库
  • 机器学习02——概要
  • Ansible的使用
  • Java面试黄金宝典44
  • Yalmip工具箱(3)——错误类型
  • SHAP 能帮我们精准看穿预测模型的因果关系吗?
  • NO.81十六届蓝桥杯备战|数据结构-Trie树-字典树-前缀树|于是他错误的点名开始了|最大异或对 The XOR Largest Pair(C++)
  • 汽车售后诊断 ODX 和 OTX 对比分析报告
  • JSX 中,`style` 和 `className` 是两种不同的样式控制方式
  • ctfshow——web入门186~190
  • Feign修仙指南:声明式HTTP请求的优雅之道
  • Java中23种设计模式之代理模式
  • Codeforces Round 970 (Div. 3)题解
  • 物联网与边缘计算之边缘计算节点设计与协议(MQTT、CoAP)
  • uniapp:微信小程序,一键获取手机号
  • 如何优化 App 启动速度以实现快速打开
  • 在Python中对一个数取整
  • Rust在航空电子软件开发中的可行性研究:现状与展望
  • Kafka生产者和消费者:数据管道的核心引擎与智能终端
  • 【学习笔记】字符串string的常用处理方法(C++)
  • 批量给 jpg/png 等格式图片添加文字水印或图片水印
  • 算法训练之位运算
  • 记一次ubantu搭建vulhub靶场。从docker安装到拉取vulhub靶场一条龙服务