使用git查看对特定文件的更改

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

比方说,我已经更改了文件file_1.rbfile_2.rb,…, file_N.rb,但我只对文件file_2.rb中的变化感兴趣。我如何检查这些更改(在我提交之前)?

670381 次浏览

使用如下命令:

git diff file_2.rb

请参阅# EYZ0文档以获得关于您可以获得差异的各种事情的完整信息。

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

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

你可以执行

git status -s

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

git diff <filepath + filename>

或者如果你喜欢使用自己的gui工具:

git difftool ./filepath
你可以根据这篇文章来设置你的gui工具: # EYZ0 < / p >

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

# EYZ0

这将显示文件的整个历史(包括重命名以外的历史和每次更改的差异)。

换句话说,如果名为bar的文件曾经被命名为foo,那么git log -p bar(没有——follow选项)将只显示文件重命名之前的历史记录——当文件被命名为foo时,它不会显示文件的历史记录。使用git log——follow -p bar将显示文件的整个历史记录,包括当它被称为foo时对文件的任何更改。

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

# EYZ0

你也可以试试

git show <filename>

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

你可以查看git show文档获取更多信息。

完全同意greg Hewgill的观点

如果路径中包含空格,可以尝试添加撇号'或'

MyProject/My Folder/My Sub Folder/file_2.rb

若要仅列出特定文件更改的提交细节,

git log --follow file_1.rb

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

git log -p file_1.rb

只列出commit和它的消息,

git log --follow --oneline file_1.rb

你可以使用tig:

# EYZ0

你只需在控制台输入:tig

你可以有这样的东西,你可以浏览每一行代码的提交和本地更改

enter image description here

Git diff文件名

会给你 添加行as + 删除行为-