如何从git分支中删除文件

Om3*_*3ga 4 git github repository

我承诺,但没有推送到存储库,文件到分支,即abc.现在我想从这个分支中删除它abc.我怎样才能做到这一点?

Ste*_*ngs 7

我假设您想要从历史中删除该文件,就好像它从未存在过一样.如果您只是想在将来的提交中删除该文件,那么使用git rm my-bad-file.txt并忽略我的其余答案.


如果文件仅在最近的提交中,则最容易使用git rm my-bad-file.txt删除文件,然后git commit --amend编辑先前的提交.

如果有多个提交包含违规文件,则git filter-branch可能有用.

git filter-branch --index-filter 'git rm --cached --ignore-unmatch my-bad-file.txt' master..abc
Run Code Online (Sandbox Code Playgroud)

这意味着:

  • git filter-branch:让我们重写一些提交!

  • --index-filter:更改每个提交的索引,而不实际在磁盘上检查它.

  • 'git rm --cached --ignore-unmatch my-bad-file.txt':对于每个提交,取消暂存名为"my-bad-file.txt"的文件(如果存在).

  • master..abc:在分支abc上的所有提交上执行此操作,返回到从master分支分支的位置.