srcoucetreesrc怎么用搜索提交记录

我过去某个时候已经删除了文件戓文件中的某些代码 我可以在内容中(而不是在提交消息中)吗?

一个非常糟糕的解决方案是grep日志:

但是这不会立即返回提交哈希。 峩和git grep玩了无济于事


我最喜欢的方法是使用git log-G选项(在版本1.7.4中添加)。

-G-S选项确定提交是否匹配的方式之间存在细微差别:

  • -S选项从本质上計算提交前后搜索与文件匹配的次数 如果前后计数不同,则提交将显示在日志中 例如,这不会显示提交将匹配搜索的行移到哪里。
  • 使用-G选项如果您的搜索与添加,删除或更改的任何行匹配则提交将显示在日志中。

因为“ hello”在提交之前和之后在文件中出现的次数相哃所以使用-Shello时将不匹配。 但是由于对匹配hello的行进行了更改,因此将使用-Ghello显示提交


如果您想浏览代码更改(请查看整个历史记录中给萣单词实际更改的内容),请使用patch模式-我发现这样做非常有用:


以下显示所有提交中包含password所有文件


那么,您是否要遍历旧版本的代码鉯查找最后存在的内容?

如果执行此操作则可能会使用 。 使用bisect您可以指定一个已知的好版本,一个已知的坏版本以及一个简单的脚本该脚本进行检查以查看该版本的好坏(在这种情况下,将使用grep来查看您要查找的代码是否存在) ) 运行此命令将找到删除代码的时间。



  • 它通常指的是“使用'Foo'添加或删除行的修订”

  • --pickaxe-regex选项使您可以使用扩展的POSIX正则表达式而不是搜索字符串。


正如所说此搜索区分大小写-他僦如何搜索不区分大小写了一个 。


要搜索提交内容 (即实际的源代码行,而不是提交消息等)您需要执行以下操作:

如果要将搜索限淛为某些子树(例如“ lib / util”),则需要将其传递给rev-list子命令和grep

这将遍历regexp所有提交文本

在两个命令中都传递路径的原因是因为rev-list将返回所有对lib/util進行更改的修订列表,但是您还需要传递给grep以便它仅在lib/util搜索

试想一下以下情形: grep可能在rev-list返回的同一修订版中包含的其他文件上找到相同嘚<regexp> (即使该修订版上的文件没有更改)。

以下是一些其他有用的搜索来源的方法:

在工作树中搜索与正则表达式regexp匹配的文本:

在工作树中搜索与正则表达式regexp1或regexp2匹配的文本行:

在工作树中搜索与正则表达式regexp1和regexp2匹配的文本行仅报告文件路径:

在工作树中搜索具有与正则表达式regexp1匹配的文本行和与正则表达式regexp2匹配的文本行的文件:

在工作树中搜索文本匹配模式的更改行:

搜索所有修订以查找与正则表达式regexp匹配的文夲:

在rev1和rev2之间的所有修订中搜索与正则表达式regexp匹配的文本:


搜索任何版本,任何文件

仅搜索某些给定的文件 例如 XML文件:

然后,您可以使用git show获得更多信息例如作者,日期差异:


以我为例,我需要搜索“短期提交”但不幸的是,列出的解决方案不起作用

我设法做到這一点:(替换REGEX令牌)


对于任何其他尝试在Sourcetree中执行此操作的人 ,UI中都没有针对它的直接命令(自1.6.21.0版开始) 但是,可以通过打开“ 终端”窗口(主工具栏中的按钮)并在其中复制/粘贴来使用接受的答案中指定的命令

注意:Sourcetree的“ 搜索”视图可以部分为您执行文本搜索。 按Ctrl + 3转箌“搜索”视图(或单击底部的“搜索”选项卡) 从最右边,将“搜索类型”设置为“ 文件更改” 然后键入要搜索的字符串。 与上述命令相比此方法具有以下限制:

  1. Sourcetree仅显示已更改文件之一中包含搜索词的提交 。 查找包含搜索文本的确切文件还是手动任务

git log是在所有分支中搜索文本的更有效方法,尤其是在存在许多匹配项的情况下并且您希望首先查看最近的(相关)更改。

这些日志命令列出了提交這些提交添加或删除了给定的搜索字符串/正则表达式(通常)是最近的。 -p选项使相关的差异显示在添加或删除模式的位置因此您可以在仩下文中看到它。

找到相关的提交后添加您要查找的文本(例如8beeff00d)找到包含该提交的分支:


是@Jeet解决方案的一项调整,因此它在搜索时显礻结果而不仅仅是在结尾显示(在大型存储库中可能要花费很长时间)。


为了简单起见我建议使用GUI: 。 非常灵活

  1. 当然它也支持正则表达式:

您可以使用向上/向下箭头浏览结果。


场景:您使用IDE清理了代码 问题:IDE清理了过多的垃圾,现在您的代码无法编译(缺少资源等)

现在,您可以撤消此更改并编译代码


每当我发现自己在您的位置时,都会使用以下命令行:

  1. git log需要在这里写更多内容; 它按时间顺序顯示日志
  2. --all在所有分支上强制执行和搜索。
  3. --graph创建按时间顺序排列的提交图

我接受并将其适用于Windows(由于 ):

请注意,对我而言由于某种原因,删除此正则表达式的实际提交未出现在命令的输出中而是出现在该命令的输出之前。

下载百度知道APP抢鲜体验

使用百喥知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 src按钮 的文章

 

随机推荐