使用 git 查看对特定文件的更改
Posted
技术标签:
【中文标题】使用 git 查看对特定文件的更改【英文标题】:See changes to a specific file using git 【发布时间】:2011-12-24 07:36:26 【问题描述】:我知道我可以使用git diff
命令来检查更改,但据我了解,它是基于目录的。这意味着它给出了当前目录上所有文件的所有更改。
如何只检查一个特定文件中的更改? 比如说,我更改了文件file_1.rb
、file_2.rb
、...、file_N.rb
,但我只对文件file_2.rb
中的更改。我如何检查这些更改(在我提交之前)?
【问题讨论】:
How to view file history in Git?的可能重复 我的主要问题是如何在提交所有更改之前检查特定文件的差异。我猜 Git 日志用于提交的更改。 根据我的经验,最好使用像GitKraken这样的可视化工具 【参考方案1】:使用如下命令:
git diff file_2.rb
请参阅git diff
documentation,了解有关您可以获得差异的各种事物的完整信息。
通常,git diff
本身会显示整个存储库(不仅仅是当前目录)中的所有更改。
【讨论】:
如果你想查看你已经“git add”的文件更改,那就是“git diff --cached” 如果你想检查一个较旧的提交的文件:$ git diff [commit hash] file_2.rb 如何退出差异视图? 或者使用SourceTree。 @GurpreetsinghDhanju 试试按Q【参考方案2】:您可以使用gitk [filename]
查看更改日志
【讨论】:
这将显示文件上提交的历史记录,这有时可能是您需要的。【参考方案3】:你可以执行
git status -s
这将显示修改后的文件名,然后通过复制感兴趣的文件路径,您可以使用git diff
查看更改
git diff <filepath + filename>
【讨论】:
【参考方案4】:或者,如果您更喜欢使用自己的 gui 工具:
git difftool ./filepath
您可以在这篇文章的指导下设置您的 gui 工具: How do I view 'git diff' output with a visual diff program?
【讨论】:
【参考方案5】:另一种方法(在this SO answer 中提到)会将历史记录保留在终端中,并为您提供文件本身的非常深入的跟踪记录:
git log --follow -p -- file
这将显示文件的整个历史记录(包括重命名之外的历史记录以及每次更改的差异)。
换句话说,如果名为 bar 的文件曾经被命名为 foo,那么 git log -p bar(没有 --follow 选项)将只显示文件的历史记录,直到它被重命名——它不会t 显示文件被称为 foo 时的历史记录。使用 git log --follow -p bar 将显示文件的整个历史记录,包括文件被称为 foo 时的任何更改。
【讨论】:
与 --stat 配合得很好,可以概览添加/删除的行。 是的,这个答案至少应该排名更高,跟踪历史,而不仅仅是当前的差异,您也不必跟踪所有提交哈希。非常简单的用法但非常强大的变化【参考方案6】:您可以使用以下命令查看谁更改了文件中的内容。
git blame <filename>
【讨论】:
这是最好的答案,因为它可以告诉您谁进行了哪些更改,以及更改属于哪个提交以及更改的时间。要过滤特定更改,只需执行git blame <filename> | grep <searchfor>
其中<searchfor>
是一个短值。例如,要找出谁将dist/index.php
中的foo
更改为bar
,您可以使用git blame dist/index.php | grep bar
【参考方案7】:
你也可以试试
git show <filename>
对于提交,git show 将显示日志消息和文本差异(在您的文件和文件的提交版本之间)。
您可以查看git show Documentation了解更多信息。
【讨论】:
【参考方案8】:完全同意@Greg Hewgill
如果您的路径包含空格,您可能会使用,尝试添加撇号 '
或 `
git diff '我的项目/我的文件夹/我的子文件夹/file_2.rb'
【讨论】:
【参考方案9】:仅列出特定文件更改的提交详细信息,
git log --follow file_1.rb
列出同一文件的各种提交之间的差异,
git log -p file_1.rb
仅列出提交及其消息,
git log --follow --oneline file_1.rb
【讨论】:
【参考方案10】:你可以使用 tig :
sudo apt install tig
您只需在控制台中输入:tig
你可以有这样的东西,你可以浏览每个代码行的提交和本地更改
【讨论】:
【参考方案11】:git diff 文件名
会给你 添加行为 + 删除的行为 -
【讨论】:
以上是关于使用 git 查看对特定文件的更改的主要内容,如果未能解决你的问题,请参考以下文章