git - 仅从单个分支而不是整个存储库中删除文件的历史记录

标签 git

我有一个主题分支(master)有很多变化。在本主题分支的整个历史中,对某个文件进行了大量更改。如何在我的主题分支的整个历史记录中删除对此文件的所有更改?

补充说明:

  • 请注意,该文件主题分支创建之前就已存在。我不想删除文件本身。
  • 我有几个解决方案,但到目前为止它们看起来都很乏味。我会将它们作为单独的答案发布。
  • git filter-branch 能以某种方式用于此吗?
  • 我的主题分支包含大约...比如说...60 次提交。

最佳答案

使用 git filter-branch:

$ git checkout topic-branch
$ git filter-branch --index-filter 'git checkout master -- myfile' master..HEAD

关于git - 仅从单个分支而不是整个存储库中删除文件的历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19000552/

相关文章:

Git checkout 提交并附加到现有分支

Git:使用 git hook 将回车符\r 转换为新行\n?

git - 尝试执行基本 git 操作时获取 "Vim: Caught deadly signal ILL"

git - 将提交从一个分支移动到另一个分支,然后将它们 merge 回去

推送时 Git 无法解析引用

Git - 压缩较早的提交并将其反射(reflect)在不同的分支上

git - 将 git parent 指针设置为不同的父级

git - 如果我删除了我的 git repo 上的一个分支并且有人试图向它推送提交,会发生什么?

git - 让 git 在本地忘记一个文件,但在网上记住它

git:如何创建我当前工作的一个分支,但保留在我原来的分支上