5

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

4

1 回答 1

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

这表示:

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

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

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

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

于 2012-07-15T08:25:01.447 回答