gpt4 book ai didi

git - 如何在针对最后一次 Git checkout /提交的更改中搜索?

转载 作者:太空狗 更新时间:2023-10-29 14:44:02 24 4
gpt4 key购买 nike

我的 Git 存储库工作副本中的一个更改导致了一个错误,其中提到了一个变量 foo,我想在我的工作副本中找到哪些文件和行包含一个更改的行,其中提到了 foo.

如果我执行 git diff path/file 它会启动一个可视化编辑器,因此我无法在 shell 中进行 grep。即使这样做有效,它也会省略相关文件的名称。

This answer似乎更接近我想要的,但其中充斥着不相关的示例,使用的术语我并不真正理解。

我不想搜索任何历史记录(即提交),我想在我当前所做的更改中搜索 foo 自上次 checkout/提交。

“嘿,Git,我更改了什么包含 foo 且尚未提交的内容?请提供文件名和行号。”

我该怎么做?

(如果您碰巧知道 Linux 上的可视化差异编辑器可以问同样的问题,我也很高兴。)

最佳答案

一个普通的 git diff 命令会给你文件名和行号,所以如果我们能适本地限制它应该能完成这项工作。你可以这样做:

git diff -G foo

但如果您进行了分阶段更改,这将不起作用。 (您可以使用 --cached 参数仅检查暂存的更改,但不包括未暂存的更改。)

这应该会更好:

git diff-index -G foo -p -U0 HEAD

这两个命令都将包含匹配文件中的所有更改,而不仅仅是包含 foo 的更改,否则应该按照您的要求执行。

另请注意,这两个命令都将包含补丁输出,因此如果您有大量更改,则需要额外滚动。此外,要获得准确的行号,如果同一个大块中有其他更改,您需要做一些简单的数学运算。例如。如果你看到这个:

@@ -101,6 +103,8 @@
+ int bar = 1;
+ int baz = 2;
+ int foo = 3;

这意味着 大块头 是第 101 行,现在是第 103 行,因此 foo 行现在是第 105 行。

关于git - 如何在针对最后一次 Git checkout /提交的更改中搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39295379/

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