Git 最近提交中不小心包含了多余的文件怎么办

  • 作者:吴思含(Witheart)
  • 更新时间:20250616

概要:本文介绍了当最近一次 Git 提交中误包含了多余文件时,如何通过 git reset 和 git commit --amend 等命令将其移除,同时保留对该文件的修改内容,并分离为新的提交。


1. 问题描述

在开发过程中,如果工作区中有两个文件需要分别提交为 A 和 B 两次 commit,但不小心在 A 提交中包含了两个文件,此时如何修改 A 提交,将多余的文件移除,同时不丢失对该文件的更改?

适用场景:A 提交是最近一次提交,B 提交尚未进行。


2. 解决方案步骤

2.1 使用 git reset 移除暂存区的文件

git reset HEAD^ -- build/make/tools/buildinfo.sh
  • 作用:将该文件从最近一次提交(A)中移除。
  • 效果
    • 暂存区:该文件被移除,状态回到 A 提交前。
    • 工作区:仍保留该文件在 A 提交时的修改内容(不会丢失变更)。

2.2 使用 git commit --amend 修改最近一次提交

git commit --amend
  • 作用:修改最近一次提交(A),用当前暂存区内容(已移除多余文件)覆盖原有内容。
  • 结果:A 提交不再包含 build/make/tools/buildinfo.sh 文件。

2.3 进行新的 B 提交

  • 将 build/make/tools/buildinfo.sh 添加并提交:
git add build/make/tools/buildinfo.sh
git commit -m "B 提交 - 添加 buildinfo.sh 的修改"

3. 最终提交历史结构

  • B 提交:包含 build/make/tools/buildinfo.sh
  • A 提交(修正后):不再包含该文件,仅保留原本应包含的内容