「git」将文件从已有 commit 中移除

159 阅读1分钟

将文件从已经提交的文件中移除

背景

因为对业务不够了解,导致一个已经合入主分支但是未部署的代码需要将其中部分文件从提交中剔除,来避免造成严重的业务问题;因为在我们的团队建议大家使用 squash 的方式提交改动,所以就想着用 rebase 来回溯到这次 commit,然后修改提交的具体内容;操作很简单,但是特此记录。

具体操作

假设我们有如下提交,我们希望对 commit2 中的部分内容进行修改:

- commit1
- commit2
- commit3

那么我们首先需要利用 rebase 的交互模式将 commit2 改为 edit 模式:

$ git rebase -i HEAD~3
$ # 或者你可以使用 commit3 的 hash
$ git rebase -i [HASH]

然后修改 commit2 的模式为 edit(e),然后保存:

git rebase interactive mode 紧接着我们使用 git status 命令,会发现在提交记录中没有任何改动的文件信息,就像这样:

no files 📍到这里并不算完成,我们还需要利用 git reset HEAD^ 命令让已经提交的文件重新变成 unstaged 状态:

reset current commit

接下来,就是利用 VSCode 或者命令行,将我们不需要文件从中剔除,最后不要忘记完成 rebase 的操作。