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

时间:2011-11-08 09:55:07

标签: git git-svn

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

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

10 个答案:

答案 0 :(得分:515)

使用如下命令:

git diff file_2.rb

有关您可以获得差异的各种事项的完整信息,请参阅git diff documentation

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

答案 1 :(得分:73)

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

答案 2 :(得分:66)

另一种方法(在this SO answer中提到)将保留终端中的历史记录,并为您提供文件本身的非常深入的记录:

git log --follow -p -- file

  

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

     

换句话说,如果名为bar的文件曾经被命名为foo,那么git log -p bar(没有--follow选项)将仅显示文件的历史记录,直到它被重命名为止 - 它赢了“ t显示文件的历史记录,当它被称为foo时。使用git log --follow -p bar将显示文件的整个历史记录,包括文件被称为foo时对文件的任何更改。

答案 3 :(得分:14)

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

=Sum({1} If((Date(MonthName(C_DATE),'MMM-YY')) >= (AddMonths(Today(),-12)),1,0))

答案 4 :(得分:12)

您可以执行

git status -s

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

查看更改
git diff <filepath + filename>

答案 5 :(得分:4)

您也可以尝试

git show <filename>

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

您可以查看git show Documentation了解详情。

答案 6 :(得分:2)

仅列出有关特定文件更改的详细信息,

git log --follow file_1.rb

列出同一文件的各种提交之间的差异,

git log -p file_1.rb

仅列出提交及其消息,

git log --follow --oneline file_1.rb

答案 7 :(得分:0)

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

git difftool ./filepath

您可以在此帖子的指导下设置您的gui工具: How do I view 'git diff' output with a visual diff program?

答案 8 :(得分:0)

完全同意@Greg Hewgill

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

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

答案 9 :(得分:0)

你可以使用 tig :

sudo apt install tig

您只需在控制台中输入:tig

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

enter image description here