关于git svn:使用git查看对特定文件的更改

See changes to a specific file using git

我知道我可以使用git diff命令检查更改,但据我所知,它是基于目录的。这意味着它给出了当前目录中所有文件的所有更改。

如何仅检查一个特定文件中的更改?比如说,我已经更改了文件file_1.rbfile_2.rb…、file_N.rb,但我只对文件file_2.rb的更改感兴趣。那么(在提交之前)我该如何检查这些更改?


使用如下命令:

1
git diff file_2.rb

请参阅git diff文档,以获取有关可以获得差异的内容的完整信息。

通常情况下,git diff本身会显示整个存储库(而不仅仅是当前目录)中的所有更改。


您可以使用gitk [filename]查看更改日志。


另一种方法(在本回答中提到)将在终端中保存历史记录,并为您提供文件本身的非常深入的跟踪记录:

江户十一〔四〕号

This will show the entire history of the file (including history beyond renames and with diffs for each change).

In other words, if the file named bar was once named foo, then git log -p bar (without the --follow option) will only show the file's history up to the point where it was renamed -- it won't show the file's history when it was known as foo. Using git log --follow -p bar will show the file's entire history, including any changes to the file when it was known as foo.


您可以使用下面的命令查看谁更改了文件中的内容。

埃多克斯1〔5〕


你可以执行

1
git status -s

这将显示修改的文件名,然后通过复制感兴趣的文件路径,您可以使用git diff查看更改。

1
git diff <filepath + filename>

你也可以试试

1
git show <filename>

对于提交,git show将显示日志消息和文本差异(在您的文件和提交的文件版本之间)。

您可以查看git show文档了解更多信息。


只列出特定文件更改的提交详细信息,

1
git log --follow file_1.rb

列出同一个文件的不同提交之间的差异,

1
git log -p file_1.rb

只列出提交及其消息,

1
git log --follow --oneline file_1.rb

完全同意@greg hewgill

如果您的路径包含空格,您可以使用,尝试使用撇号'或`

git diff'我的项目/我的文件夹/我的子文件夹/文件.rb'


或者,如果您喜欢使用自己的GUI工具:

1
git difftool ./filepath

您可以根据本文设置GUI工具:如何使用可视diff程序查看"gitdiff"输出?