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

Mel*_*lon 413 git git-svn

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

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

Gre*_*ill 581

使用如下命令:

git diff file_2.rb
Run Code Online (Sandbox Code Playgroud)

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

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

  • 如果你想看到你已经"git add"'ed的文件更改,那就是"git diff --cached" (90认同)
  • 如果要根据较旧的提交检查文件:$ git diff [commit hash] file_2.rb (6认同)
  • 如何退出差异视图? (4认同)
  • 或者使用 SourceTree。 (2认同)
  • @GurpreetsinghDhanju尝试按Q (2认同)

da *_*res 80

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

  • 这将显示文件提交的历史记录,有时可能是您需要的. (2认同)

AJ *_*ane 78

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

git log --follow -p -- file

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

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

  • 与 --stat 配合使用可以很好地了解添加/删除的行。 (3认同)
  • 是的,这个答案至少应该排名更高,跟踪历史记录,而不仅仅是当前的差异,您也不必跟踪所有提交哈希。非常简单的用法,但在变化方面非常强大 (3认同)

小智 18

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

git blame <filename>

  • 这是最好的答案,因为它告诉您谁进行了哪些更改,以及更改是何时以及哪些提交的一部分。要过滤特定的更改,只需执行`git blame &lt;filename&gt; | grep &lt;searchfor&gt;` 其中 `&lt;searchfor&gt;` 是一个短值。例如,要找出谁将 `dist/index.php` 中的 `foo` 更改为 `bar`,您可以使用 `git blame dist/index.php | grep 栏` (4认同)

Moh*_*med 16

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

git log --follow file_1.rb
Run Code Online (Sandbox Code Playgroud)

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

git log -p file_1.rb
Run Code Online (Sandbox Code Playgroud)

仅列出提交及其消息,

git log --follow --oneline file_1.rb
Run Code Online (Sandbox Code Playgroud)


小智 14

你可以执行

git status -s
Run Code Online (Sandbox Code Playgroud)

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

git diff <filepath + filename>
Run Code Online (Sandbox Code Playgroud)


Vin*_*uri 14

git diff 文件名

会给你添加的行作为 + 删除的行作为 -


Lui*_*nto 6

你也可以尝试

git show <filename>
Run Code Online (Sandbox Code Playgroud)

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

您可以检查git show文档以获取更多信息。


Ami*_*Dev 5

你可以使用 tig :

sudo apt install tig

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

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

在此输入图像描述