使用git filter-branch时,它会复制我的提交历史记录并创建重复的文件。我该如何摆脱呢?

猎人

我不小心在其中一个文件中提交了密码,所以现在我试图摆脱它。

我正在运行的命令是:

git filter-branch --tree-filter "find . -type f -exec sed -i -e 's/password/REDACTED/g' {} \;"

它成功完成了我需要做的事情,但是它复制了所有带有.rb-e扩展名的文件,还复制了我的所有提交。如何清除文件并防止重复提交?

温特穆特

sed附带的MacOS X是BSD sed的,不是GNU sed和到位而不制作备份它不能改变文件--i标志总是需要一个参数,即后缀备份文件都会有。在您的通话中,-i -e被解析为一个标志,告诉sed在适当位置编辑文件并在中放置备份filename-e这就是您获得大量.rb-e文件的原因

我认为,最实用的解决方案是稍后删除备份文件。那是,

git filter-branch --tree-filter "find . -type f -exec sed -i.bak 's/password/REDACTED/g' {} \; -exec rm '{}'.bak \;"

我随意-e使用更明智的文件扩展名(.bak进行替换确保使用不与要保留的文件冲突的后缀。您可以根据需要将其-e放回原处,但在这种情况下则没有必要。

编辑:@torek指出,如果BSD sed的-i标志给出一个空字符串作为参数(即''),则sed可以在适当位置编辑文件我主要不与GNU sed一起工作。不过,我觉得允许sed生成备份文件比使用更好-i ''在上述find调用中,-exec仅当第一个命令报告成功完成(因为-exec也是一个过滤器)时,才会执行第二个命令,因此,如果sed返回错误,则仍然有备份文件。而且当事情变得糟透了时,备份就很好了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用git filter-branch时,它会复制我的提交历史记录并创建重复的文件。我该如何摆脱呢?

来自分类Dev

了解为什么git-filter-branch无法清除我的历史记录

来自分类Dev

通过整个git历史记录更改文件中的字符串,filter-branch不会重写文件

来自分类Dev

我如何只保留git仓库的1个提交历史记录?

来自分类Dev

如何在Git中仅查看我自己的提交历史记录?

来自分类Dev

我如何查看已删除分支的git历史记录(使用git flow)

来自分类Dev

如何使Guake使用我的Zsh命令历史记录?

来自分类Dev

git查看/复制历史记录中所有提交的文件

来自分类Dev

Git filter-branch给了我两套提交

来自分类Dev

git filter-branch尊重我的最初提交.gitignore

来自分类Dev

我想将 svn 项目复制到带有历史记录的 git

来自分类Dev

如何从git历史记录中提取提交?

来自分类Dev

如何从git历史记录中完全删除提交

来自分类Dev

git:历史记录中没有提交的文件,如何解释?

来自分类Dev

如何在不提交更改的情况下从git历史记录中删除文件?

来自分类Dev

Git:如何在项目提交历史记录中查找已删除的文件?

来自分类Dev

使用Git强制文件历史记录关联

来自分类Dev

复制git项目时如何重新连接历史记录?

来自分类Dev

如何使用git svn重写/重新排序/压缩svn提交历史记录?

来自分类Dev

使用filter-branch更改作者名称后,Git提交重复

来自分类Dev

使用filter-branch更改作者名称后,Git提交重复

来自分类Dev

Git获取我所在的分支的历史记录

来自分类Dev

Git在分离的HEAD状态下变基-如果我想更正历史记录中的文件并在最新提交中替换一个文件,该怎么办

来自分类Dev

使用git-filter-branch提取多个目录

来自分类Dev

git filter-branch使用两个查询

来自分类Dev

使用 git filter-branch 运行 shell 命令

来自分类Dev

我的git repo中的某些文件没有历史记录。怎么了?

来自分类Dev

Git:如何下载单个文件的整个历史记录?

来自分类Dev

如何简单地线性化我的git历史记录?

Related 相关文章

  1. 1

    使用git filter-branch时,它会复制我的提交历史记录并创建重复的文件。我该如何摆脱呢?

  2. 2

    了解为什么git-filter-branch无法清除我的历史记录

  3. 3

    通过整个git历史记录更改文件中的字符串,filter-branch不会重写文件

  4. 4

    我如何只保留git仓库的1个提交历史记录?

  5. 5

    如何在Git中仅查看我自己的提交历史记录?

  6. 6

    我如何查看已删除分支的git历史记录(使用git flow)

  7. 7

    如何使Guake使用我的Zsh命令历史记录?

  8. 8

    git查看/复制历史记录中所有提交的文件

  9. 9

    Git filter-branch给了我两套提交

  10. 10

    git filter-branch尊重我的最初提交.gitignore

  11. 11

    我想将 svn 项目复制到带有历史记录的 git

  12. 12

    如何从git历史记录中提取提交?

  13. 13

    如何从git历史记录中完全删除提交

  14. 14

    git:历史记录中没有提交的文件,如何解释?

  15. 15

    如何在不提交更改的情况下从git历史记录中删除文件?

  16. 16

    Git:如何在项目提交历史记录中查找已删除的文件?

  17. 17

    使用Git强制文件历史记录关联

  18. 18

    复制git项目时如何重新连接历史记录?

  19. 19

    如何使用git svn重写/重新排序/压缩svn提交历史记录?

  20. 20

    使用filter-branch更改作者名称后,Git提交重复

  21. 21

    使用filter-branch更改作者名称后,Git提交重复

  22. 22

    Git获取我所在的分支的历史记录

  23. 23

    Git在分离的HEAD状态下变基-如果我想更正历史记录中的文件并在最新提交中替换一个文件,该怎么办

  24. 24

    使用git-filter-branch提取多个目录

  25. 25

    git filter-branch使用两个查询

  26. 26

    使用 git filter-branch 运行 shell 命令

  27. 27

    我的git repo中的某些文件没有历史记录。怎么了?

  28. 28

    Git:如何下载单个文件的整个历史记录?

  29. 29

    如何简单地线性化我的git历史记录?

热门标签

归档