【问题标题】:Git - history of a file [duplicate]Git - 文件的历史记录[重复]
【发布时间】:2019-05-05 19:15:46
【问题描述】:

我有一个经常出现的工作流模式,我想知道如何在 git 中实现这一点。

我有一个随时间变化的文件。我可能已经删除了一个方法或以某种方式对其进行了更改,但我现在意识到其中一些代码可能很有用。

如何检查单个文件的历史记录并签出并比较这个先前提交的文件?

【问题讨论】:

  • 您尝试过简单的git log -- <filepath> 吗?可能就足够了,具体取决于您要搜索的内容的复杂性。
  • 是的,我可以看到日志,但是我只想快速查看一下提交 dea11dfddc6512c0c09eabf20622ac5f9df8c731 中的文件
  • 哦 ^^ 所以你也可以git checkout dea11df -- <filepath>。不过,请务必事先提交对文件的任何未决更改。然后,如果需要,您将在之后使用git checkout -- <filepath> 将文件恢复为实际状态。
  • 请注意,从技术上讲,Git 没有具有“文件历史记录”。它只有“历史”,实际上是“所有提交”。每个提交都是一个完整的快照,因此如果您向 Git 询问“文件 X 的历史记录”,Git 所做的就是向后遍历提交图,一次一个提交对,比较两个快照。如果快照 $OLDER 与快照 $NEWER 在 X 中有差异,则 Git 宣称 $NEWER “改变”了 X。

标签: git history git-log


【解决方案1】:

如果您想查看文件的简单历史记录(即哪个提交更改了文件):

git log (filename)

例如git log testdir/test.py


对于文件的详细历史记录(包括差异),添加 -p(--patch 的缩写):

git log -p (filename)
git log --patch (filename)

用于在提交中显示文件更改:

git show (SHA Hash) (filename)

【讨论】:

    【解决方案2】:

    您可以为特定文件执行git diffhttps://git-scm.com/docs/git-diff 虽然使用一些 IDE(IntelliJ、Eclipse 等)或 git GUI 工具(gitk、SourceTree、Gitkraken)更容易进行文件版本之间的差异/比较。

    【讨论】:

    • 也在输入这个,Bitbucket 也有一个非常简单的文件差异观察器!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 2020-05-30
    相关资源
    最近更新 更多