当前位置: 首页 > 知识库问答 >
问题:

Git diff:是否可以只显示更改的行

严斌
2023-03-14

我试图只获得新版本的行已更改,而不是git diff显示的所有其他信息。

用于:

git diff HEAD --no-ext-diff --unified=0 --exit-code -a --no-prefix

它显示:

diff --git file1 file2
index d9db605..a884b50 100644
--- file1
+++ file2
@@ -16 +16 @@ bla bla bla
-old text
+new text

我想看到的只是:

new text

可能吗?

共有3个答案

徐嘉谊
2023-03-14

您可以使用:

git diff-U0

这将使您的输出为"新文本"

龚博涛
2023-03-14

如果您只需要新文本部分,请使用以下选项:

git diff HEAD --no-ext-diff --unified=0 --exit-code -a --no-prefix | egrep "^\+"

这基本上是您的代码,通过一个正则表达式导入到egrep命令中。正则表达式将只过滤以加号开头的行。

樊桐
2023-03-14

在所有情况下,仅添加行并没有意义。如果你替换了某个文本块,并且碰巧包含了一行以前存在的内容,git必须进行匹配和猜测。-通常,git diff的输出可以用作patch之后的输入,因此是有意义的。只有添加的行没有精确定义,因为git在某些情况下必须猜测。

如果您仍然想要它,则不能仅信任前导的符号。也许过滤所有绿线更好:

git diff --color=always|perl -wlne 'print $1 if /^\e\[32m\+\e\[m\e\[32m(.*)\e\[m$/'

对于仅删除的行,请为所有红线筛选:

git diff --color=always|perl -wlne 'print $1 if /^\e\[31m-(.*)\e\[m$/'

要检查输出中的颜色代码,您可以使用:

git diff --color=always|ruby -wne 'p $_'
 类似资料:
  • 问题内容: 情况:我正在与Wicket一起工作。我在具有黑色背景的页面上设置了按钮。当用户按下按钮时,按钮的活动指示灯熄灭并旋转,直到系统准备好继续运行为止。 问题:由于背景为黑色,因此指示器看起来不正常。由于指示器的一部分是黑色动画,因此在黑色背景上使用指示器会丢失一些细节。 问题:在Wicket中是否可以更改[按钮,链接等] 的颜色,还是我必须以新的方式设计页面? 问题答案: 这是不可能的。好

  • 问题内容: 是否可以“监视”指令上的ui更改?像这样的东西: 问题答案: 是。您可以使用,如果你在属性利用插值。 但是,如果这不是一个插值属性,并且您希望它可以从应用程序中的其他位置更改(绝对不建议这样做,请阅读Common Pitfalls ),那么函数可以返回: 无论如何,对您来说最好的方法可能是更改更改元素类的代码。它何时更改?

  • 问题内容: 我以前曾将Netbeans与Subversion(SVN)一起使用过,我喜欢它如何显示自上次提交以来我所做的更改,并使用了左边距的颜色。 Eclipse可以做同样的事情吗?我已经安装了Subclipse。 问题答案: 访问窗口->首选项->常规->编辑器->文本编辑器->快速差异,然后启用 启用快速差异 显示概览标尺的差异

  • 我正在尝试返回Json文件的内容。但是我想在将其发送到前端之前进行修改。我想在文件的开头和结尾添加“[”和“]”。我这样做是因为json文件有。 例如,提取结果,如图所示 问题 是否可以更改响应主体并将其放回ResponseEntity? 源代码

  • 例如: 用例1: 我想将上面的查询传递给一个实用工具类,该类将只使用不同的SELECT生成相同的查询,例如: 目前,我在应用程序代码中的查询构造时使用助手类来完成这一任务。我想把责任转移到一个库,这样它就可以透明地强制应用程序。 谢了。

  • 问题内容: 的 多重嵌套视图 功能非常好-您可以轻松地从应用程序的一种 状态 跳到另一种 状态 。 有时您可能想更改URL,但有时不需要。我觉得 状态 的概念应该与 route 分开/可选。 这是一个说明我意思的朋克。 这是文档中的一个小工具的分支,下面有2个小更改: 这似乎可行-URL保持不变。同样,这里做了多少多余的工作?这是经过批准/测试的用法吗? 如果您可以省略某个州的信息,那就太好了。