一个初学者的问题:在git历史中有几种搜索方法。对我来说,不清楚的是,命令之间的区别是:
git log,例如,git log -S 'for what you search' --all在所有分支中搜索字符串,git log -G 'search for regexpr' --all用于搜索regexpr。参见例如这里git log --grep 'pattern'git rev-list,例如git rev-list --grep='string' --allgit grep,例如来自这里的git grep "string or regexpr" $(git rev-list --all)gitk,例如gitk file.txt a gui接口git log --all --full-history -- **/thefile.*从这里中搜索历史记录中的文件名。git diff --word-diff-regex=. > changes.txt与grep -oP '\+[^\+]+\+' changes.txt | tr -d '\+'相结合,以显示基于字符的更改。来自这里。如果更改还没有完成,这甚至是可行的。我的理解是
git log在提交消息中搜索?它似乎是基于rev-list?从医生那里:显示提交日志。该命令采用适用于git rev-list命令的选项来控制显示的内容和方式,以及适用于git diff-*命令的选项,以控制每个提交引入的更改是如何显示的。
git-rev-list似乎是一个更基本的命令,因为它对提交对象(或树对象?)进行操作。从医生那里:git-rev-list -list提交对象按反向时间顺序排列
git grep似乎到处搜索:在文件、块、树和提交对象中?从医生那里:grep匹配图案的打印线。在工作树中的跟踪文件、在索引文件中注册的blobs或给定树对象中的blobs中查找指定的模式。模式是由换行符分隔的一个或多个搜索表达式的列表。作为搜索表达式的空字符串与所有行匹配。
我使用吉特书作为参考。
发布于 2017-11-15 13:12:32
git log在提交消息中搜索?
是。选项-S/-G搜索提交,以更改出现的次数(即添加或删除)提到的文本。--grep搜索整个提交消息。
git grep似乎到处搜索:在文件、块、树和提交对象中?
不,仅在文件中(即blobs)。
https://stackoverflow.com/questions/47307978
复制相似问题