根据我的理解,该命令git blame应该显示文件中的每一行的作者和最后修改该行的提交。例如,如果我运行git blame -- "<filename>"并获得第 5 行的以下输出:
106b77db (Walrus 2016-03-24 10:01:36 +0800 5) .root {
Run Code Online (Sandbox Code Playgroud)
这意味着该行.root {源自Walrus提交中的作者106b77db。换句话说,如果我检查106b77db使用生成的补丁git show -p 106b77db,我希望该行+.root {显示在差异中。确实如此。
106b77db的 diff的片段<filename>:
/* JavaFX CSS - Leave this comment until you have at least create one rule which uses -fx-Property */
+.root {
+ -fx-background-color: transparent;
+}
+
Run Code Online (Sandbox Code Playgroud)
现在,当我运行git blame -w -- "<filename>"(该-w选项忽略空白更改,即及时向后跟踪每一行以找到对该行引入非空白更改的最后一个作者)时,我现在得到第 5 …
我有以下C++代码:
return lineNum >= startLineNum
&& lineNum <= startLineNum + lines.size() - 1;
Run Code Online (Sandbox Code Playgroud)
这里lineNum是一个int,startLineNum是一个int,lines是一个std::vector<std::string>,lines.size()是一个类型size_t.
当lineNum为2时,startLineNum为0,并且lines.size()为0,true即使false预期,代码也会返回.这些值是调试器中显示的值.
即使在可能的情况下添加括号后:
return ((lineNum >= startLineNum)
&& (lineNum <= (startLineNum + lines.size() - 1)));
Run Code Online (Sandbox Code Playgroud)
代码仍然错误地返回true.
当我将代码重构为这种形式时:
int start = startLineNum;
int end = startLineNum + lines.size() - 1;
return lineNum >= start && lineNum <= end;
Run Code Online (Sandbox Code Playgroud)
它现在false …