Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git diff在现有函数中添加新函数,而不是在现有函数之后添加新函数_Git_Diff - Fatal编程技术网

Git diff在现有函数中添加新函数,而不是在现有函数之后添加新函数

Git diff在现有函数中添加新函数,而不是在现有函数之后添加新函数,git,diff,Git,Diff,我开始更多地关注我正在创建的diff文件(使用git),我对这种情况下创建的diff的清晰性感到不满 我首先说: sub main { my $self = shift; return $self; } 然后,我添加第二个函数,并在第一个函数中对其进行调用,以获得: sub main { my $self = shift; $self -> process ( 'hello world!' ); return $self; } sub pr

我开始更多地关注我正在创建的diff文件(使用git),我对这种情况下创建的diff的清晰性感到不满

我首先说:

sub main {
    my $self = shift;

    return $self;
}
然后,我添加第二个函数,并在第一个函数中对其进行调用,以获得:

sub main {
    my $self = shift;

    $self -> process ( 'hello world!' );

    return $self;
}

sub process {
    my $self = shift;

    print @_, "\n";

    return $self;
}
我得到的差异输出是:

@@ -1,5 +1,15 @@
 sub main {
    my $self = shift;

+   $self -> process ( 'hello world!' );
+   
+   return $self;
+}
+
+sub process {
+   my $self = shift;
+   
+   print @_, "\n";
+   
    return $self;
 }
在我看来,这对读者来说是非常不整洁和不清楚的。添加的代码块使它看起来像是我在“main”函数中添加了很多行,而实际上我在它后面添加了很多行。例如,我希望/希望差异是这样的:

@@ -1,5 +1,15 @@
 sub main {
    my $self = shift;

+   $self -> process ( 'hello world!' );
+   
    return $self;
 }
+
+sub process {
+   my $self = shift;
+   
+   print @_, "\n";
+   
+   return $self;
+}
我理解diff为什么要创建这个输出(从“a->b”开始的最简单的方式),但我希望它能变得更清楚。这可能吗?或者我正在考虑手动编辑差异,或者甚至将新函数的添加和对它的调用分离为两个单独的补丁/提交?[1]

我试过使用——没有最小值,——耐心和——直方图算法,但结果是相同的。使用“git add-p”手动编辑差异没有什么区别,它仍然作为第一个“不清楚”的差异进行分级


[1] 作为一个附带问题,这种分离是我应该做的吗?提交明智吗?

通常人们不会将这样的更改分离为多个提交。 一般来说,规则是尝试让每个提交都独立。即使你 如果将其拆分为多个提交,人们通常会看到不同的 其中一项犯罪之前的国家和两项犯罪之后的国家,以及 因此,请查看与您所看到的相同类型的输出

使用
gitadd-p
肯定不会影响输出的差异。 这只是一种更好地控制哪些更改进入下一个更改的方法 犯罪无论如何,提交只包含树的新内容 您正在使用的,它不会记录与前一个的差异 版本以后显示的差异将在每次 他们被要求

有一件事有助于避免这种情况,那就是添加一条类似于
#End的注释
每个函数的右括号后的
。但这也有其原因 承认它的丑陋。在实际代码中,这两种代码之间可能没有那么多的共性 不同的函数,因此差异出现的可能性较小 误导但在任何情况下,大多数人只是习惯了这种情况。

根据,diff的默认上下文是3行。当两大块(可能的)独立变化更接近并因此重叠时,它们在一个普通大块中结合起来

您可以接受它,也可以始终使用
-U
选项

使用上下文的
行而不是通常的三行生成差异

用你的分歧