找到作者触及的所有行,并在Git中包含一个字符串

时间:2015-07-09 14:18:14

标签: git

有什么方法可以扫描整个仓库以寻找特定作者所涉及的行并且还包含某个字符串?

例如,假设一位作者在他的代码中使用了错误的db字段,该字段分布在许多文件中。错误的db字段在同一作者的许多提交中使用,并在其他作者的其他提交中正确使用。现在我们需要在由该作者编写的所有文件中的所有行中更改它,而不是由其他作者编写的行更改。

所以我们有作者A和作者B,以及2个文件。

a.cpp:

use1(my_db_field); // author A
use5(some_other_field); // author A
use2(my_db_field); // author B

b.cpp:

use3(my_db_field); // author B
use4(my_db_field); // author A

因此,如果我搜索由作者A和my_db_field更改的行,我需要同时使用use1()use4(),而不是use3(),{{ 1}},或use2()

最好,我们要搜索带有忽略大小写和启用正则表达式的字符串。

这可以在Git中完成吗?

2 个答案:

答案 0 :(得分:2)

没有一种简单的方法可以做到这一点。

您可以使用git log --author=foo@bar --pretty:%H提供作者已完成的提交列表,然后针对每个提交对父项运行git diff,并查看差异是否有您所做的更改正在寻找。但你必须蛮力。

git blame只会逐个文件显示内容,如果您不知道要查找哪些文件,这可能没用。此外,它会隐藏作者犯错的更改,然后其他人随后编辑了同一行。

答案 1 :(得分:0)

image.layer.cornerRadius = image.frame.size.width /2;
image.layer.masksToBounds = YES;
image.layer.borderWidth = 5;
image.layer.borderColor = [UIColor whiteColor].CGColor;

将显示该作者提交的涉及包含该正则表达式的行的提交。