git - 如何避免 git diff 将代码块名称放在 block 头中?

标签 git

这是使用 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
+}

我有两个问题:

  1. 查看大量标题行,在 @@ 之后有一个 public class ...。所以 git diff 将代码块名称(这里是类定义)放在 hunk header 中。 为什么 git diff 这样做?我可以要求 git diff 不要将那部分放在 hunk header 中吗?
  2. 看看第二个大块头部分。它显示了类文件的最后几行,根本没有修改。 为什么 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 没有描述......

最佳答案

  1. Git 放置这些 block 名称是为了让人们更容易确定给定补丁影响文件的哪一部分。如果是 C,它会显示函数定义的第一行,这非常有用。显然,在 Java 的情况下,它的信息量略少。为什么它让你烦恼?
  2. 您在文件末尾添加或删除了一个换行符。 Git 将其视为差异。因此它被列在 diff 中。

关于git - 如何避免 git diff 将代码块名称放在 block 头中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8614134/

相关文章:

git - 使用 Berkshelf 解决递归 git cookbook 依赖关系

git - 使用命令 shell 忽略来自 git diff 或 git status 的文件

git - 在没有 git 历史记录的情况下,如何将项目的当前状态推送到新的远程存储库?

git - 在 Golang 中导入带冒号的路径

git - 使用libgit查找具有给定前缀的提交

git - v2.0 从零开始。我应该继续使用现有的 git repo 还是开始一个新的?

iOS Git 和 Cocoapods - 如何对通过 Cocoapods 添加的模块进行自定义?

svn - git-svn 显示 svn 仓库 url

git - 在 Git 中使用 receive.denyCurrentBranch 有什么后果?

git - 如何聚合提交之间的代码更改