在gitk
中,搜索提交时,有两个选项对我来说听起来一样 - “添加/删除字符串”和“更改行匹配”。
我认为它们之间仍然存在一些差异?
好吧,“添加/删除字符串”将是旧文件具有特定目标字符串而新文件没有的情况,或者旧文件没有它,而新文件有。换句话说,在不修改周围上下文的情况下添加或删除字符串(例如,“abc xyz def”->“abc def”,或“abc def”->“abc xyzdef”,如果您的目标字符串是“xyz”)。该字符串可能是也可能不是整行。
相反,“更改行匹配”将是与该字符串匹配的行上的任何更改,即使更改不会影响该字符串。例如“abc xyz def”->“abc xyz def foo”。
两者之间可能有很多重叠,但它们的差异足以在不同的情况下有用。
“添加/删除字符串”只是检查更改是否逐字包含字符串。另一方面,“更改行匹配”将给定模式应用为正则表达式,并找到与提供的正则表达式模式匹配的更改。
相应的命令行选项是-S
(添加/删除字符串)和-G
(更改行匹配)。在命令行上,您也有可能-Sstring --pickaxe-regex
将镐字符串视为正则表达式,但仅在它被删除或在提交中添加时才匹配它(但如果它只是更改行的一部分)。