从git修订版中删除特定文件/文件夹

从git修订版中删除特定文件/文件夹,git,Git,假设我发现有一些文件不应该出现在我的git版本中。例如密码、API密钥和商业秘密文件 有没有办法删除这些文件出现在修订版中的文件?并且仍然保留该版本中的其余文件?可能有用。这允许您重写一系列过去的提交,更改提交的内容 如果您所做的更改从未离开您的本地存储库,那么这将起作用。如果您将这些令人不快的更改推到了某个地方,或者有人将它们从您那里拉了出来,那么您将面临一个更大的问题,即在每个人的存储库中清除它们 但是,要修复本地存储库,请执行以下操作: git filter-branch --index-

假设我发现有一些文件不应该出现在我的git版本中。例如密码、API密钥和商业秘密文件

有没有办法删除这些文件出现在修订版中的文件?并且仍然保留该版本中的其余文件?

可能有用。这允许您重写一系列过去的提交,更改提交的内容

如果您所做的更改从未离开您的本地存储库,那么这将起作用。如果您将这些令人不快的更改推到了某个地方,或者有人将它们从您那里拉了出来,那么您将面临一个更大的问题,即在每个人的存储库中清除它们

但是,要修复本地存储库,请执行以下操作:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch bad-file1.txt bad-file2.txt' master..abc
这意味着:

  • git过滤器分支
    :让我们重写一些提交

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

  • 'git rm--cached--ignore unmatch bad-file1.txt bad-file2.txt'
    :对于每次提交,如果两个文件存在,请取消对它们的保存

  • master..abc
    :对分支abc上的所有提交执行此操作,并将其返回到从主分支分叉的位置。您也可以说“
    master~3
    ”来重写过去的3次提交,或任何其他提交。您还可以使用“
    --all
    ”(两个破折号,空格,两个破折号,“all”)重写存储库中的所有内容


就是这样。谢谢,我无意中签入了日志文件和tmp文件:/