gpt4 book ai didi

linux - git diff --numstat 按字符串而不是文件路径

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:35 26 4
gpt4 key购买 nike

我正在尝试运行 git diff --no-index --numstat <string> <string>在 Linux(Debian Docker 容器)上,但我找不到实现此目的的方法。本质上,我想将文件的内容作为字符串而不是文件路径传递。目标是从 --numstat 检索统计信息旗帜。

这个命令应该可以在 git 之外执行存储库/目录和 Linux。到目前为止,我发现了两个缺少以前要求的解决方案:

  1. git diff --no-index --numstat /dev/fd/3 /dev/fd/4 3<<<$(echo "<string>") 4<<<$(echo "<string>") : 这适用于 MacOS,但不适用于 Linux。
  2. git diff --numstat $(echo <string> | git hash-object -w --stdin) $(echo <string> | git hash-object -w --stdin) : 仅在 git 内有效存储库(从 here 获得此部分解决方案)

当然必须有办法实现这一点,要么通过一些git命令或其他 bash我不知道的概念。任何帮助都会很棒。

谢谢!

最佳答案

解决方案 1 不起作用的原因是 /dev/fd/3/dev/fd/4 是符号链接(symbolic link)和 git diff 不遵循符号链接(symbolic link),而是使用它们的链接目标字符串作为它们的“内容”。

将字符串而不是文件直接传递给 git diff 的唯一方法是作为标准输入——这显然只适用于其中一个文件。所以我只看到两种可能的解决方案来解决您的问题:

  1. 首先将字符串写入(临时)文件,然后将它们传递给 git diff
  2. 按照 @B--rian 的建议使用另一个工具在评论中

1. 使用 process substitution 的另一个较短版本会是:

git diff --no-index --numstat <(echo "<string1>") <(echo "<string2>")

不幸的是,由于同样的原因/因为 git diff 不支持进程替换,这不起作用,请参阅 https://stackoverflow.com/a/49636553/11932806

关于linux - git diff --numstat 按字符串而不是文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57526196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com