vscode只在git中搜索文本更改

8zzbczxx  于 2023-05-05  发布在  Git
关注(0)|答案(6)|浏览(150)

在发布分支之前,有时我想搜索一个特定的关键字,以确保我在任何地方都正确地修复了它。问题是,我只想在更改中搜索它,而不是整个项目。
这可能吗?

o0lyfsai

o0lyfsai1#

正如AsGoodAsItGets在其中一条评论中指出的那样,在VS Code github上有一个feature request未决,这将允许我们这样做。
在此期间,我有一个解决方案:
1.关闭所有打开的文件
1.开源控制

1.右键单击Changes并选择Open changed files。请注意,它也将打开已删除的文件。

1.转到Search并选择Search only in Open Editors

不是很理想,但这就是我搜索console.log剩余数据的方式;)

dbf7pr2w

dbf7pr2w2#

参考这些屏幕截图。您可以在“轻松打开文件”中搜索。

也可以使用文件包含功能

如果你想找到所有的历史提交,其中 commit message 包含给定的单词,使用

$ git log --grep=word

如果你想找到所有在 file contents 中添加或删除了“word”的提交(更确切地说:其中“单词”的出现次数改变),即搜索 * 提交内容 *,使用所谓的'镐'搜索与

$ git log -Sword

在现代git中也有

$ git log -Gword

查找添加或删除的行与“word”匹配的 * 差异 *(也是 * 提交内容 *)。
请注意,-G默认接受正则表达式,而-S接受字符串,但可以使用--pickaxe-regex修改为接受正则表达式。

gk7wooem

gk7wooem3#

1.通过键入^、使用View > Terminal菜单选项或运行View: Toggle Integrated Terminal命令打开终端。
1.运行git diff BRANCH1..BRANCH2 -G REGEX。将BRANCH1替换为要比较的分支,将BRANCH2替换为当前分支,将REGEX替换为您正在搜索的关键字的正则表达式。
如果希望在VSCode编辑器中而不是在集成终端中查看结果,请将| code -附加到git diff命令。

oaxa6hgo

oaxa6hgo4#

从命令行:

  1. git grep "pattern"将在跟踪文件中查找pattern
    请注意,它将搜索搜索文件的 * 完整内容 *,而不仅仅是diff部分(如@NickMcCurdy和@KunalVohra所建议的那样,将是git diff -Ggit log -G)。
    如果你指定了一个提交引用,它会查看存储在该提交中的版本,例如:
# this will look into the files as they are on disk (working tree) :
git grep "pattern"

# this will look into files as stored in the last commit :
git grep "pattern" HEAD
  1. git diff --name-only将列出在两次目标提交之间修改的文件
    通过结合两者:
git grep "pattern" HEAD -- $(git diff --name-only HEAD^ HEAD)

你可以搜索pattern,只在最后一次提交的mmodified文件中查找。
您可以添加-i进行不区分大小写的搜索:git grep -i "pattern" ;
如果你想查看自提交eacf32以来更改的文件:

# change the file listing part to :
$(git diff --name-only eacf32 HEAD)

如果你想搜索“自从分支分支分支离开master以来修改过的文件”:

$(git diff --name-only master...HEAD)  # that's 3 dots

我不知道有什么vscode扩展允许你运行git grep,你可以从VSCode中打开的bash终端运行上面的命令。
@NickMcCurdy建议:你可以在这个命令的末尾加上| code -,在vscode编辑器中打开结果。

eoigrqb6

eoigrqb65#

你不能
两个选择:

  1. Suggest这是VSCode存储库上的一个特性。
    1.在终端中使用以下命令,在所有暂存文件中搜索字符串**。
    git grep --cached "myString" $(git diff --cached --name-only)
    提示:如果是#2,那么创建一个脚本并将其放入.bashrc!

~/scripts/search.sh

run() {
 git grep --cached "$@" $(git diff --cached --name-only)
}

~/.bashrc

# Script to search after string in all staged files.
alias search="~/scripts/search.sh"

$ search test

ivqmmu1c

ivqmmu1c6#

1.右键单击一个选项卡,然后单击“全部关闭”(并不总是需要)
1.按cmd/ctrl+shift+p查看编辑器命令
1.选择“Git:打开所有更改”(打开所有更改的文件)

1.点击放大镜打开左侧搜索

1.单击图书图标选择“仅在打开的编辑器中搜索”

  1. Search away:)
    注1:在这个屏幕截图中,我正在搜索“console.log”。
    注2:“要包含的文件”行是否为空并不重要。

相关问题