搜索git历史的更好方法
我经常做搜索git历史的更好方法,git,Git,我经常做git log-p寻找一行代码更改,通常是删除。这打开得更少,然后我会搜索我要找的内容。这确实有效。但是,一旦找到它,我有时会想查看该文件的提交日志,通常是为了确定何时提交。这通常涉及到由于许多文件提交而导致的大量滚动。有没有一种好方法可以停止滚动,直接跳到提交文件?找到命中的文件就是?^diff;然后查找提交头的搜索字符串是?^commit,如果使用的是默认头格式,则带有该尾随空格;如果使用的是?^[a-f0-9]{5},则为--oneline 显然,mercurial有一个diff
git log-p
寻找一行代码更改,通常是删除。这打开得更少,然后我会搜索我要找的内容。这确实有效。但是,一旦找到它,我有时会想查看该文件的提交日志,通常是为了确定何时提交。这通常涉及到由于许多文件提交而导致的大量滚动。有没有一种好方法可以停止滚动,直接跳到提交文件?找到命中的文件就是?^diff
;然后查找提交头的搜索字符串是?^commit
,如果使用的是默认头格式,则带有该尾随空格;如果使用的是?^[a-f0-9]{5}
,则为--oneline
显然,mercurial有一个diff scraper,可以将点击和元数据压缩成一行,这是为了好玩。找到点击所在的文件就是
?^diff
;然后查找提交头的搜索字符串是?^commit
,如果使用的是默认头格式,则带有该尾随空格;如果使用的是?^[a-f0-9]{5}
,则为--oneline
显然,mercurial有一个diff scraper,可以将点击和元数据压缩到一行中,这很有趣。如果您正在寻找删除特定行的提交,有更好的方法 使用git日志:
git日志-S路径/to/file
使用git责备
:
git-burn——反向开始..结束文件名
如果您正在查找已删除特定行的提交,则有更好的方法
使用git日志:
git日志-S路径/to/file
使用git责备
:
git-burn——反向开始..结束文件名
为什么不使用许多图形前端中的一个?我的最爱:git extensions
(仅限windows)、SourceTree
(在windows上很糟糕),GitKraken
@MarekR在我当前的工作环境中,我不允许安装未经批准的软件。我正在找一份新工作。我不知道是否可以使用源代码树等。那么gitk
呢?它通常与git一起提供,作为默认的图形前端,因此您可能已经拥有了它。它的UI流很难看,有点奇怪,但它的速度很快。@MarekR可能是的。我只是一个终端机我喜欢ungit
。这是一种可视化git提交树的好方法。为什么不使用许多图形前端中的一个呢?我的最爱:git extensions
(仅限windows)、SourceTree
(在windows上很糟糕),GitKraken
@MarekR在我当前的工作环境中,我不允许安装未经批准的软件。我正在找一份新工作。我不知道是否可以使用源代码树等。那么gitk
呢?它通常与git一起提供,作为默认的图形前端,因此您可能已经拥有了它。它的UI流很难看,有点奇怪,但它的速度很快。@MarekR可能是的。我只是一个终端机我喜欢ungit
。这是一种可视化git提交树的好方法。另外:git log-G
。虽然-S
和-G
在几个方面有所不同(特别是其中一个默认为简单字符串,另一个默认为正则表达式),但最大的区别在于-G
查看diff以查看它是否包含某些内容,而-S
查看diff以查看something的数量是否发生了变化。例如,假设我们有一个diff,它改变了一个单词W的拼写,这个单词位于第二个单词X之前,这个单词要么被添加,要么被删除git log-sx
将查找差异,因为它添加/删除了X。git log-gx
也将查找差异。但是git log-sw
不会,而git log-gw
会。虽然-S
和-G
在几个方面有所不同(特别是其中一个默认为简单字符串,另一个默认为正则表达式),但最大的区别在于-G
查看diff以查看它是否包含某些内容,而-S
查看diff以查看something的数量是否发生了变化。例如,假设我们有一个diff,它改变了一个单词W的拼写,这个单词位于第二个单词X之前,这个单词要么被添加,要么被删除git log-sx
将查找差异,因为它添加/删除了X。git log-gx
也将查找差异。但是git log-sw
不会,而git log-gw
会。