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

发布于:2025-04-10 ⋅ 阅读:(39) ⋅ 点赞:(0)

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  # 忽略文件权限变化