在Git代码库中,我想列出包含特定单词的所有提交.我试过这个
git log -p | grep --context=4 "word"
Run Code Online (Sandbox Code Playgroud)
但它并不一定会给我回文件名(除非它比我搜索的单词少了5行.我也尝试过
git grep "word"
Run Code Online (Sandbox Code Playgroud)
但它只给我现在的文件,而不是历史.
如何搜索整个历史记录以便我可以跟踪特定单词的更改?我的意思是在我的代码库中搜索单词的出现以跟踪更改(在文件历史记录中搜索).
基本上我想尝试别名:
git files 9fa3
Run Code Online (Sandbox Code Playgroud)
...执行命令:
git diff --name-status 9fa3^ 9fa3
Run Code Online (Sandbox Code Playgroud)
但是git似乎没有将位置参数传递给alias命令.我试过了:
[alias]
files = "!git diff --name-status $1^ $1"
files = "!git diff --name-status {1}^ {1}"
Run Code Online (Sandbox Code Playgroud)
......以及其他一些但不起作用.
退化的情况是:
$ git echo_reverse_these_params a b c d e
e d c b a
Run Code Online (Sandbox Code Playgroud)
......我怎么能做这个工作?
使用git,如何在所有本地分支中的所有文件中搜索给定的字符串?
Github具体:是否可以在所有github分支上执行上述搜索?(在我的远程github repo上有几个远程分支,理想情况下我不需要为此搜索降低...)
我想知道在哪个提交中添加了下面给出的代码:
if (getListView().getChildCount() == 0)
getActivity().findViewById(android.R.id.empty).setVisibility(View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)
我该如何实现这一目标?
假设我有一个文件A.cpp,我注意到该文件的第15行有错误.假设错误是函数上的"const",它返回一个指向成员变量的指针,这意味着在函数上使用const在技术上是正确的但在语义上是错误的.我想与作出改变的作者讨论语义.
使用git,有没有办法找出引入"const"令牌的修订版?更具体地说,我想知道谁引入了令牌.
"git blame"显示谁对该行进行了最后一次更改,但我实际上希望找到包含该令牌的第一个提交.
在哪个git版本成为git config --local可用选项,我在哪里可以阅读更多相关信息?
我认为不提供--global将自动假设它是一个本地配置变量.为什么这个新选项是必要的?
是否可以在所有分支中的一个文件中使用 Git grep字符串?
我知道我对某个特定文件进行了更改;我只是找不到我在哪个分支上做的。
我想回到最后一次包含代码的提交,例如"ThisClass(object):".该代码随后在稍后的提交中从项目中删除.
我想过使用git bisect + grep/awk-ing.我也听说git grep可能允许你做这类事情,虽然我无法在手册页中弄清楚正确的命令.
有什么想法吗?
我试图跟踪一段代码(只是一行)到它的提交.
使用blame只会指向一个提交,其中这个行被作为提取方法样式重构的一部分移动.
我可以使用哪些技术来进行提交,这是第一次在代码库中存在特定文本?
我发现.razmatazz在HTML文件中使用了某个CSS类,但是这个标识符不在任何现有的CSS文件中.这解释了不正确的演示,我已经"踢了一段时间".
> git log -S razmatazz --source --all
847d9d8 Thu Jun 25 10:05:07 2018 Joe C helpful commit message.
9384843 Wed May 20 14:10:34 2018 Joe C ever more helpful commit message.
2093483 Mon Apr 15 11:15:51 2018 Joe C yet another great message.
Run Code Online (Sandbox Code Playgroud)
但同时我一直在合并/取消合并/重命名我的CSS文件,因此我不知道CSS文件名.
如何确定添加或删除给定标识符的文件名?
由于"pickaxe"git选项没有说明是否添加或删除了标识符,我会尝试找到的哈希值和它们的前辈
git show 847d9d8:/path/to/file
git show 847d9d8^:/path/to/file
git show 9384843:/path/to/file
git show 9384843^:/path/to/file
git show 2093483:/path/to/file
git show 2093483^:/path/to/file
Run Code Online (Sandbox Code Playgroud)
以获取丢失的定义.
我向存储库添加了一些代码行并提交了它。然后这些行之后的提交数已被删除。
我有添加行时的提交哈希值以及删除它们的后续提交的哈希值。我怎样才能找到它们被删除的确切提交?
在许多人使用的git存储库中,我找到了一些我感兴趣的代码,但是并没有完全充实。
我无法知道这是最近的更改还是旧的更改,因此我犹豫只浏览文件上的所有提交。
是否可以找到代码行何时出现在存储库中,以便我可以与发布它的原始人交谈?
git ×12
blame ×2
grep ×2
search ×2
alias ×1
awk ×1
branch ×1
command ×1
git-blame ×1
git-commit ×1
git-config ×1
github ×1
parameters ×1
position ×1