我知道我可以使用git diff
命令来检查更改,但是据我所知,它是基于目录的。这意味着它将给出当前目录中所有文件的所有更改。
如何只检查一个特定文件中的更改?说,我已更改的文件file_1.rb
,file_2.rb
......,file_N.rb
但我只关心文件中的变化file_2.rb
。然后(在提交之前)如何检查这些更改?
我知道我可以使用git diff
命令来检查更改,但是据我所知,它是基于目录的。这意味着它将给出当前目录中所有文件的所有更改。
如何只检查一个特定文件中的更改?说,我已更改的文件file_1.rb
,file_2.rb
......,file_N.rb
但我只关心文件中的变化file_2.rb
。然后(在提交之前)如何检查这些更改?
Answers:
使用如下命令:
git diff file_2.rb
请参阅git diff
文档,以获取有关可能会有所不同的各种信息的完整信息。
通常,git diff
它本身会显示整个存储库中的所有更改(而不仅仅是当前目录)。
另一种方法(在此SO答案中提到)将历史记录保留在终端中,并为您提供文件本身的深层跟踪记录:
git log --follow -p -- file
这将显示文件的整个历史记录(包括重命名后的历史记录以及每个更改的差异)。
换句话说,如果名为bar的文件曾经被命名为foo,则git log -p bar(不带--follow选项)将仅显示文件的历史记录,直到重命名为止-不会显示文件的历史记录,即foo。使用git log --follow -p bar将显示文件的整个历史记录,包括对文件的任何更改(称为foo)。
您可以使用以下命令查看谁更改了文件中的内容。
git blame <filename>
git blame <filename> | grep <searchfor>
where <searchfor>
的值。例如,要找出更改foo
为bar
in的人dist/index.php
,您可以使用git blame dist/index.php | grep bar
您可以执行
git status -s
这将显示修改后的文件名,然后通过复制感兴趣的文件路径,您可以使用查看更改 git diff
git diff <filepath + filename>
仅列出特定文件更改的提交详细信息,
git log --follow file_1.rb
列出同一文件的各种提交之间的差异,
git log -p file_1.rb
仅列出提交及其消息,
git log --follow --oneline file_1.rb
或者,如果您更喜欢使用自己的GUI工具,请执行以下操作:
git difftool ./filepath
您可以在本文的指导下设置gui工具: 如何使用可视化diff程序查看“ git diff”输出?