如何使用git查找已删除的行?

音乐迷

有时候,我想重新添加一些我从存储库中删除的代码。我总是使用类似tig浏览历史记录的工具来查找删除了某些行的提交。

有没有办法用git查找已删除的行?喜欢的东西git-grep,但对于提交的内容,而不是提交信息?

格雷格·培根

如果您记得在删除的行中有一些关键字(例如,变量或函数的名称),请使用镐搜索,如下所示:

git log -Skeyword

或查看增量以及提交消息

git log -p -Skeyword

尽管-S搜索精确的字符串匹配la fgrep,但是您可以搜索regex匹配-G

请注意,“”-S-G“”的参数之间没有空格。

说明文件:

-S<string>

寻找差异来改变文件中指定字符串(即加/删除)出现的次数。旨在供脚本编写者使用。

当您正在寻找确切的代码块(例如struct),并且想知道该块自首次出现以来的历史记录时,此功能非常有用:迭代使用该功能将原图像中的有趣块反馈到-S,并继续进行,直到获得该块的第一个版本。

-G<regex>

寻找差异,其补丁文本包含匹配的已添加/已删除的行。

为了说明之间的区别-S<regex> --pickaxe-regex,并-G<regex>考虑在同一个文件中的以下DIFF提交:

+    return !regexec(regexp, two->ptr, 1, &regmatch, 0);
...
-    hit = !regexec(regexp, mf2.ptr, 1, &regmatch, 0);

虽然git log -G"regexec\(regexp"将显示此提交,但git log -S"regexec\(regexp" --pickaxe-regex不会(因为该字符串的出现次数未更改)。

有关更多信息,请参见gitdiffcore中的镐头条目(转载于下)。


diffcore-pickaxe:用于检测指定字符串的添加/删除

这种转换将文件对的集合限制为以某种方式更改前映像和后映像之间的指定字符串的文件对。-S<block of text>-G<regular expression>选项用于指定搜索这些字符串的不同方式。

-S<block of text>检测其前映像和后映像在指定文本块中出现次数不同的文件根据定义,它不会检测文件中的移动。另外,当变更集在不影响有趣的字符串的情况下批发文件时,diffcore-rename照常启动,并-S忽略了文件对(因为该字符串的出现次数在重命名检测到的文件对中没有改变)。与结合使用时--pickaxe-regex,将文本块视为要匹配的扩展POSIX正则表达式,而不是文字字符串。

-G<regular expression>(mnemonic grep:)检测其文本差异具有与给定正则表达式匹配的添加或删除行的文件对这意味着它将检测文件中的移动(或重命名检测认为相同的文件)移动,这是噪音。该实现两次运行diff并陷入困境,这可能会非常昂贵。

不使用-S或时,仅匹配其各自标准的文件对将保留在输出中。使用时,即使一个filepair匹配它们各自的标准在一个变更中,整个变更被保持。此行为旨在使在整个变更集的上下文中更轻松地检查变更。-G--pickaxe-all--pickaxe-all

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Laravel中仅查找已删除的行?

来自分类Dev

如何使用JDBC查找已删除记录的主键?

来自分类Dev

如何使用JDBC查找已删除记录的主键?

来自分类Dev

如何防止git使用git add暂存已删除的文件?

来自分类Dev

如何从Git中已删除的文件暂存单个行?

来自分类Dev

如何通过git diff命令仅获取已删除的行?

来自分类Dev

如何查找git commits删除了文件中的行

来自分类Dev

使用查找删除行

来自分类Dev

从合并复制中查找已删除的行

来自分类Dev

如何使用git pull取回已删除的文件?

来自分类Dev

如何使用Git Bash查看已删除的文件?

来自分类Dev

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

来自分类Dev

如何查找和恢复已删除的项目?

来自分类Dev

如何查找已安装的“ git”包的路径

来自分类Dev

如何恢复使用命令(Git checkout ...)删除的所有已删除本地文件?

来自分类Dev

如何删除已应用的git补丁?

来自分类Dev

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

来自分类Dev

如何使用git diff查找添加的行(未更改)?

来自分类Dev

查找两个Excel文件之间的更改(新行,已删除行,已更新行)

来自分类Dev

使用SQL查询查找已删除,已添加和已存在的故障单数量

来自分类Dev

如何在ng-table中删除已删除的行

来自分类Dev

如何在ng-table中删除已删除的行

来自分类Dev

如何使用GCD删除已调度的块

来自分类Dev

Notepad ++使用查找和替换删除行

来自分类Dev

如何使用Shell脚本将文件的已删除行重定向到其他文件

来自分类Dev

如何使用Shell脚本将文件的已删除行重定向到其他文件

来自分类Dev

我如何找到已删除某些代码的Git提交?

来自分类Dev

如何恢复已删除的.git / modules文件夹

来自分类Dev

如何在复杂的git rebase中还原已删除的文件?

Related 相关文章

  1. 1

    如何在Laravel中仅查找已删除的行?

  2. 2

    如何使用JDBC查找已删除记录的主键?

  3. 3

    如何使用JDBC查找已删除记录的主键?

  4. 4

    如何防止git使用git add暂存已删除的文件?

  5. 5

    如何从Git中已删除的文件暂存单个行?

  6. 6

    如何通过git diff命令仅获取已删除的行?

  7. 7

    如何查找git commits删除了文件中的行

  8. 8

    使用查找删除行

  9. 9

    从合并复制中查找已删除的行

  10. 10

    如何使用git pull取回已删除的文件?

  11. 11

    如何使用Git Bash查看已删除的文件?

  12. 12

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

  13. 13

    如何查找和恢复已删除的项目?

  14. 14

    如何查找已安装的“ git”包的路径

  15. 15

    如何恢复使用命令(Git checkout ...)删除的所有已删除本地文件?

  16. 16

    如何删除已应用的git补丁?

  17. 17

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

  18. 18

    如何使用git diff查找添加的行(未更改)?

  19. 19

    查找两个Excel文件之间的更改(新行,已删除行,已更新行)

  20. 20

    使用SQL查询查找已删除,已添加和已存在的故障单数量

  21. 21

    如何在ng-table中删除已删除的行

  22. 22

    如何在ng-table中删除已删除的行

  23. 23

    如何使用GCD删除已调度的块

  24. 24

    Notepad ++使用查找和替换删除行

  25. 25

    如何使用Shell脚本将文件的已删除行重定向到其他文件

  26. 26

    如何使用Shell脚本将文件的已删除行重定向到其他文件

  27. 27

    我如何找到已删除某些代码的Git提交?

  28. 28

    如何恢复已删除的.git / modules文件夹

  29. 29

    如何在复杂的git rebase中还原已删除的文件?

热门标签

归档