我犯了一个错误,在未提交之前将Visual Studio 2008项目升级到2010版。由于这个原因,我有一个巨大的系统生成文件(10k+行),其中每四行更改一次。
通常我很善于经常检查并提交更改,所以我通常只是使用向下键来浏览我的更改。但在这种情况下,要浏览修改后的系统生成文件需要花费几生时间。
在执行git diff
之后是否有一种方法可以跳过到下一个被修改的文件,以便您不必滚动查看每个文件中的每个更改内容?
我犯了一个错误,在未提交之前将Visual Studio 2008项目升级到2010版。由于这个原因,我有一个巨大的系统生成文件(10k+行),其中每四行更改一次。
通常我很善于经常检查并提交更改,所以我通常只是使用向下键来浏览我的更改。但在这种情况下,要浏览修改后的系统生成文件需要花费几生时间。
在执行git diff
之后是否有一种方法可以跳过到下一个被修改的文件,以便您不必滚动查看每个文件中的每个更改内容?
默认情况下,git diff
通过less
进行输出。因此,您可以使用less
命令搜索下一个标题。键入/^diff
并按Enter跳转到下一个文件。
/
命令从您正在查看的当前位置开始搜索。因此,如果您收到该消息,则输出中没有以 diff
开头的其他行。 - Greg Hewgillgit add large.file.name
,然后执行git commit
,然后所有剩下的更改都将是其他文件,而不是大文件。 - Greg Hewgill在git diff
中,只需按下n即可直接跳转到下一个文件,再按一次将跳转到后面的文件,以此类推。
您还可以使用N返回一个文件。
(为了使用这些命令,请先输入/^diff
并按下Enter,如此答案所述。)
如果您在 git diff
中,可以输入 h
查看其他有用的命令(此时您处于 less
界面中)。
特别地:
JUMPING
g < ESC-< * Go to first line in file (or line N).
G > ESC-> * Go to last line in file (or line N).
p % * Go to beginning of file (or N percent into file).
t * Go to the (N-th) next tag.
T * Go to the (N-th) previous tag.
{ ( [ * Find close bracket } ) ].
} ) ] * Find open bracket { ( [.
ESC-^F <c1> <c2> * Find close bracket <c2>.
ESC-^B <c1> <c2> * Find open bracket <c1>
tig
。它是一个基于 curses 的界面,用于 git
,非常好用。tig status
可以查看索引状态,按下任何文件的 Enter 键,就可以查看其差异。按下 h 键可以查看帮助菜单,但它是一个基于 vi 快捷键的界面。apt-get install
命令进行安装,或者从链接的网站上下载并安装。tig
不允许您快速跳转文件,但您可以使用以下绑定实现:bind diff F :/^\+\+\+
。 - VitalyBshift+f
将搜索下一个文件。由于这不是搜索,因此n
将移动到下一个文件,而shift+n
将移动到上一个文件。 - Samaursabind diff
对我来说停止工作了。不确定原因,但这个可以:bind stage F :/^\+\+\+
- Samaursa我想你想要的是:
:n * Examine the (N-th) next file from the command line.
在less
的帮助文档中查看此内容。
CHANGING FILES
:e [file] Examine a new file.
^X^V Same as :e.
:n * Examine the (N-th) next file from the command line.
:p * Examine the (N-th) previous file from the command line.
:x * Examine the first (or N-th) file from the command line.
:d Delete the current file from the command line list.
= ^G :f Print current file name.
less
处理多个文件时,这才有效。在这里,它只是对输出进行分页,没有文件的概念。 - undefined