【发布时间】:2014-04-05 09:09:55
【问题描述】:
我有一个主题分支(关闭master)有很多变化。在此主题分支的整个历史中,某个文件发生了许多更改。如何在我的主题分支的整个历史记录中删除对此文件的所有更改?
补充说明:
- 请注意,该文件存在于主题分支创建之前。我不想删除文件本身。
- 我有几个解决方案,但到目前为止它们似乎很乏味。我会将它们作为单独的答案发布。
-
git filter-branch可以用于此目的吗? - 我的主题分支包含大约...比如说...60 次提交。
【问题讨论】:
-
您想从历史记录中删除更改,还是可以,如果在合并到 master 时删除更改?
-
git filter-branch绝对可以做到。您想要的是:对于每个新提交,如果该文件已被修改,请通过重新加载所需的版本来取消修改它。如果文件没有被修改,您仍然可以读取所需的版本,因为这将是一个空操作。我认为这可以通过--index-filter和git update-index来完成。 (我自己必须尝试使其工作。)编辑:或者,是的,git checkout <rev> -- <path>,就像你自己的回答一样:-) -
knittl:我想从历史记录中删除更改。
-
附带说明,对于一个特性分支来说,60 次提交已经很多了。从开发流程的角度来看,您的功能范围可能太大。要么,要么你应该考虑在特性分支中压缩你的提交。
-
纸杯蛋糕:确实。这是一个暑期实习生的结果,我们未能尽早与他们沟通。
标签: git