查看 git 中文件的先前版本(压缩提交)

Viewing previous versions of a file in git (squashed commits)

我打算做的和上面写的类似here。我做了最上面的答案,但是,我意识到我已经压缩了我的提交。

这是我的提交历史:

Date: <date1>
    commit 3  

Date: <date2>
    commit 2  
    commit 1

(我已将提交 1 压缩为提交 2。)

正如上面链接问题的最佳答案中所说,我做了 git show HEAD~2: file.x 但这显示了提交 1 之前的文件,而 git show HEAD~1: file.x 显示了提交 2 之后的文件。

如何在提交 1 之后和提交 2 之前查看文件?

如果压缩最近发生,您可以在相关分支的 the reflog 中检索原始提交 1 和 2。

git reflog

输出该形式的条目列表:

<commitHash> (optional decoration, as in, branches pointing here) <ref>: <operation>: <details>

你应该在最近的那些中找到你的 rebase 操作。在此之前创建一个临时分支:

git checkout -b temp HEAD@{n+1}

其中 n 是您发现的相应参考。

现在您可以自由地检查您在此临时分支上的 pre-squash 提交,并在完成后处理它。

(请注意,所有这些操作对您当前的分支没有影响,您可以在完成后处理新创建的分支)