【发布时间】:2022-11-24 01:22:55
【问题描述】:
当我将行插入file.json 时,git 也将旧行计为已删除。例如,将 "foo2": "bar2" 插入第 2 行:
old
1 {
2 "foo1": "bar1"
3 }
new
1 {
2 "foo2": "bar2"
3 "foo1": "bar1"
4 }
当我运行以下命令时,仅过滤掉以 - 和 + 开头的行:
git diff -U0 ..origin/main -- path/to/file.json | grep '^[+-][^+-]''
这是结果:
- "foo1": "bar1"
+ "foo2": "bar2"
+ "foo1": "bar1"
我知道这就是 git 的工作方式,但是有没有一种方法可以过滤掉或避免旧行显示为 deleted ?我只需要找到被删除的行,而不是被插入替换的行。
【问题讨论】:
-
这不会发生在我身上。我做了那个序列,Git 显示了插入的一行。你运行的是哪个 Git 版本?
-
您确定插入的是第 2 行而不是第 3 行吗?在您提供的示例中,您忘记了第 2 行行尾的
,,所以也许您实际上插入了第 3 行而忽略了第 2 行以添加结尾逗号的形式进行了更改?如果不是这样,那么我敢打赌区别在于空格。使用突出显示它们的文本编辑器或使用十六进制编辑器非常仔细地检查这两个文件(插入行之前/之后)。 -
@quetzalcoatl 我仔细检查了一下,确实如此,git 正在考虑添加一个逗号的新行作为一个完全独立的添加,因为旧行没有逗号。我怎样才能排除这种情况?
-
我将我和你的 cmets 复制到一个答案中,并在那里回答了你的新问题,这样其他人就可以看到它已被诊断/解决。