【发布时间】: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。