问题
我有一个GitHub仓库与一些贡献者分享,拥有相对较长的提交历史记录。曾经试图将一个孤立分支合并到主分支中,但结果并不如预期。这次尝试的结果是自从这个合并之后,所有文件似乎都在此提交中被重新创建。提交历史树仍然保留,所以当时我并没有太关注它(我很高兴终于成功了这次合并)。
那时候我没有意识到的是,单个文件的历史记录并没有得到保存。例如这个例子:这个文件应该有一份历史记录可以追溯到2012年,但这个历史记录在2017年8月11日之后就不再显示了,因为我合并了孤立分支。
可能的解决方案?
如果我查看历史树,我可以看到这个流浪提交就像某种附录一样悬挂在那里,如下面图片中用绿色标出的部分。通常情况下,如果已经将提交推送到上游,就不能安全地使用rebase
来重新定位提交,否则会给其他人带来混乱。但在这种情况下,是否可以合并或删除这个悬挂的提交,以便恢复单个文件的历史记录?或者还有其他解决方案可以安全地重新路由版本历史吗?
git log --all
命令时,难道不会看到整个历史记录(包括丢失的记录)吗? - smarbergit log --all
命令查看整个历史记录,但是使用git log -- [文件名]
命令时无法查看完整的文件历史记录。单个文件的历史记录被截断在孤儿节点处,早期的文件更改未被显示。这在浏览 GitHub 上的单个文件历史记录时会带来不便。 - MPA