0


使用 Git 版本控制查看文件的更改历史记录

问:

如何查看单个文件的历史记录以及更改内容的完整详细信息?

git log – [filename] 向我显示文件的提交历史记录,但如何查看更改的文件内容?

答1:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

这让 Git 可以为每个日志条目生成补丁:

git log -p -- filename

有关更多选项,请参阅 git help log — 它实际上可以做很多好事。 😃

要获取特定提交的差异,请使用

git show HEAD

或通过标识符指定任何其他修订。

要直观地浏览更改:

gitk
git show HEAD 显示所有文件,你知道如何跟踪单个文件(正如 Richard 所要求的)吗?
您使用: git show -- 文件名,它将显示该版本的差异,以防万一。
--stat 也很有帮助。您可以将它与 -p 一起使用。
这很棒。 gitk 在指定不再存在的路径时表现不佳。我使用了 git log -p --path 。
加上 gitk 看起来像是由布吉怪物建造的。这是一个很好的答案,最适合原始问题。

答2:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

对于图形视图,请使用 gitk:

gitk [filename]

要跨文件重命名跟踪文件:

gitk --follow [filename]
但我什至有一个将上述内容与“git blame”相结合的工具,让我可以浏览文件的源代码,因为它会随着时间的推移而改变......
不幸的是,这不遵循文件过去重命名的历史。
我也在寻找以前重命名的文件的历史记录,并首先找到了这个线程。解决方案是使用“git log --follow ”正如菲尔指出的here。
作者正在寻找一个命令行工具。虽然 gitk 与 GIT 一起提供,但它既不是命令行应用程序,也不是特别好的 GUI。
他是在寻找命令行工具吗? “右键单击-> 显示历史记录”当然并不意味着它。

答3:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

git log --follow -p -- path-to-file

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

换句话说,如果名为 bar 的文件曾经被命名为 foo,那么 git log -p bar(没有 --follow 选项)将只显示文件的历史记录,直到它被重命名 - 它不会显示文件被称为 foo 时的历史记录。使用 git log --follow -p bar 将显示文件的整个历史记录,包括在文件被称为 foo 时对文件所做的任何更改。 -p 选项确保每次更改都包含差异。

--stat 也很有帮助。您可以将它与 -p 一起使用。
我同意这是真正的答案。 (1.) --follow 确保您看到文件重命名 (2.) -p 确保您看到文件如何更改 (3.) 它只是命令行。
@NHDaly 我注意到添加了 -- ,但我不知道为什么这样做最好?它是做什么的?
@Benjohn -- 选项告诉 Git 它已到达选项的末尾,并且 -- 后面的任何内容都应视为参数。对于 git log,只有当您的路径名以 破折号 开头时,这才有意义。假设您想知道名称为“--follow”的文件的历史记录:git log --follow -p -- --follow
@Benjohn:通常, -- 很有用,因为它还可以防止任何与您输入的文件名匹配的 revision 名称,这实际上可能很可怕。例如:如果您有一个名为 foo 的分支和一个文件,则 git log -p foo 将显示 git log 历史记录到 foo,而不是 file foo 的历史记录。但是@DanMoulding 是正确的,因为 --follow 命令仅将单个文件名作为其参数,因此这不是必需的,因为它不能是 revision。我刚刚学到了。也许您当时将其排除在答案之外是对的;我不确定。

答4:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

tig 是基于终端的查看器,其颜色支持类似于基于 GUI 的 gitk。

快速安装:

APT:apt-get 安装 tig

Homebrew (OS X): $ brew install tig

使用它来查看单个文件的历史记录:tig [filename]

或通过以下方式浏览详细的存储库历史记录:tig

优秀的基于文本的工具,很好的答案。当我看到在我的无头服务器上安装 gitk 的依赖项时,我吓坏了。会再次投票A +++
您也可以使用 tig 查看特定文件,即 tig -- path/to/specific/file
要显示文件的所有更改,包括重命名,请使用 tig --follow filename。非常感谢@falken 帮助我们发现了如此出色的 TUI 工具。

答5:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

在这种情况下,git whatchanged -p filename 也等同于 git log -p filename。

您还可以使用 git blame filename 查看文件中的特定代码行何时更改。这将为文件中的每一行打印出一个简短的提交 ID、作者、时间戳和完整的代码行。在您发现错误并且想知道它是什么时候引入的(或者是谁的错)之后,这非常有用。

“鼓励新用户改用 git-log。(...) 保留该命令主要是出于历史原因;”

答6:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

源树用户

如果您使用 Sourcetree 来可视化您的存储库(它是免费的并且非常好),您可以右键单击一个文件并选择 Log Selected

https://i.stack.imgur.com/CHvfE.png

显示(下图)比 gitk 和列出的大多数其他选项更友好。不幸的是(此时)没有简单的方法可以从命令行启动这个视图——Sourcetree 的 CLI 目前只是打开存储库。

https://i.stack.imgur.com/Y9ALz.png

我特别喜欢“关注重命名的文件”选项,它允许您查看文件是否被重命名或移动。
但除非我弄错了(请告诉我!),在 gui 中一次只能比较两个版本?是否有任何客户端具有优雅的界面,可以同时区分多个不同的版本?可能有像 Sublime Text 那样的缩小视图?我认为那将非常有用。
@SamLewallen如果我理解正确,您想比较三个不同的提交?这听起来类似于三向合并(我的、你的、基础的)——通常这种策略用于解决合并冲突,不一定要比较三个任意提交。有许多工具支持三向合并stackoverflow.com/questions/10998728/…,但诀窍是为这些工具提供特定的修订gitready.com/intermediate/2009/02/27/…
你救了我的命。您可以使用 gitk 找到 SHA1 哈希,然后根据找到的 SHA1 打开 SourceTree 输入 Log Selected..。
@MarnenLaibow-Koser 我不记得当时为什么需要 SHA。啊哈哈。

答7:

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

要显示上次修改文件每一行的版本和作者:

git blame filename

或者如果你想使用强大的责备 GUI:

git gui blame filename
blame 命令不显示有关已删除代码的信息。通过 gitk 或 tig 查看每个提交表明了这一点。

答8:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

阅读并玩了一下其他答案的摘要:

通常的命令行命令是

git log --follow --all -p dir/file.c

但您也可以使用 gitk (GUI) 或 tig (文本 UI) 来提供更易于阅读的方式来查看它。

gitk --follow --all -p dir/file.c

tig --follow --all -p dir/file.c

在 Debian/Ubuntu 下,这些可爱工具的安装命令符合预期:

sudo apt-get install gitk tig

我目前正在使用:

alias gdf='gitk --follow --all -p'

这样我只需键入 gdf dir 即可获得子目录 dir 中所有内容的集中历史记录。

我认为这是一个很好的答案。也许您也没有获得投票,因为您回答了其他方式(恕我直言,更好)来查看更改,即除了 git 之外,还通过 gitk 和 tig。
只是为了补充答案。找到路径(在 git 空间中,直到它仍然存在于存储库中)。然后使用上述命令“git log --follow --all -p ”。可能存在这种情况,该文件/文件夹将在历史记录中被删除,因此找到仍然存在的最大路径,并尝试获取其历史记录。有效!
--all 适用于所有分支,其余部分在@Dan 的答案中进行了解释
哦,伙计,经过这么长时间寻找超越重命名跟踪文件的好解决方案,终于,我在这里找到了它。像魅力一样工作!谢谢!

答9:

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

您可以将 Visual Studio Code 与 GitLens 一起使用。这是一个非常强大的工具。

安装好 GitLens 后,进入 GitLens 标签页,选择 FILE HISTORY 即可浏览。

https://i.stack.imgur.com/H0j9A.png

答10:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

将此别名添加到您的 .gitconfig:

[alias]
    lg = log --all --graph --pretty=format:'%Cred%h%Creset-%C(yellow)%d%Creset%s %Cgreen(%cr)%C(bold blue)<%an>%Creset'\n--abbrev-commit --date=relative

并使用如下命令:

> git lg
> git lg -- filename

输出看起来与 gitk 输出几乎完全相同。享受。

在我运行那个 lg 快捷方式后,我说(我引用)“漂亮!”。但是,请注意“--graph”之后的“\n”是一个错误。
也可以使用 git lg -p filename - 它返回搜索文件的漂亮差异。

答11:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

最近我发现了 tig,发现它非常有用。在某些情况下,我希望它是 A 或 B,但大多数时候它相当整洁。

对于您的情况,tig 可能就是您要查找的内容。

https://jonas.github.io/tig/

原文链接:https://www.huntsbot.com/qa/5DrE/view-the-change-history-of-a-file-using-git-versioning?lang=zh_CN&from=csdn

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

标签: css 前端 css3

本文转载自: https://blog.csdn.net/kalman2019/article/details/128350218
版权归原作者 HuntsBot 所有, 如有侵权,请联系我们删除。

“使用 Git 版本控制查看文件的更改历史记录”的评论:

还没有评论