这是使用 git diff HEAD
生成的 diff 文件的一些部分。
@@ -261,6 +261,13 @@ public class JSONServiceAction extends JSONAction {
return new double[0][0];
}
}
+ /*
+ * Some changes made...
+ */
else if (typeNameOrClassDescriptor.equals("[[F")) {
String[] values = request.getParameterValues(parameter);
@@ -587,4 +594,4 @@ public class JSONServiceAction extends JSONAction {
private Map<String, Object[]> _methodCache =
new HashMap<String, Object[]>();
-}
\ No newline at end of file
+}
我有两个问题:
- 查看大量标题行,在
@@
之后有一个public class ...
。所以git diff
将代码块名称(这里是类定义)放在 hunk header 中。 为什么git diff
这样做?我可以要求git diff
不要将那部分放在 hunk header 中吗? - 看看第二个大块头部分。它显示了类文件的最后几行,根本没有修改。 为什么
git diff
将这部分包含在 diff 文件中?我能避免吗?(其实这个类唯一修改的地方是第一个hunk区,我在else if
前加了三行注释)
我查看了 git diff
手册页,但现在我仍然感到困惑,因为我不太理解手册的某些部分;我还检查了一些 SO 推荐的相关问题,但它们都是关于“如何在此处显示方法名称而不是类名称”,如下所示:Is there a way to ask git diff to show the method name instead of the class name? .
如果没有禁用自定义大头的方法,请告诉我,以便我可以尝试编写一些脚本。
更新:我想要关闭帅哥描述的原因
在我的工作中,基准测试,构建脚本中的一个步骤是自动收集源文件夹的代码库信息(如果它是 svn 工作副本)——该信息包括一个 diff 文件。现在我们希望它支持 git。当然我们会保存一个纯 git diff 文件,但是,我们必须同时生成一个 svn-compitatable diff。这是因为开发人员使用 git 而 QA(测试人员)使用 svn(经理仅将审查过的代码从 git 迁移到 svn)。
对于我工作环境中的SVN客户端,(SmartSVN,一点也不聪明),diff文件是否有某些SVN信息行并不重要。重要的是文件路径没有前缀,而且 hunk header 没有描述......
最佳答案
- Git 放置这些 block 名称是为了让人们更容易确定给定补丁影响文件的哪一部分。如果是 C,它会显示函数定义的第一行,这非常有用。显然,在 Java 的情况下,它的信息量略少。为什么它让你烦恼?
- 您在文件末尾添加或删除了一个换行符。 Git 将其视为差异。因此它被列在 diff 中。
关于git - 如何避免 git diff 将代码块名称放在 block 头中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8614134/