git reflog
显示所有活动(甚至压缩提交等)。(如果我错了请纠正我)
正如你所知道的,git reflog几乎将所有活动都存储在 git 中。
几乎任何事情都意味着它实际上并不存储所有活动,而是存储所有在本地修改过的活动。HEAD
重要的是只存储本地数据,因此备份和恢复它是无用的。
Why cant i backup reflog?
由于 reflog 仅存储本地存储库的相关信息,因此如果将其还原到不同的存储库中,它将不起作用。
例如考虑这个(非常简单的)本地流程:
# checkout master branch
git checkout master
# do some changes and commit
- At this point there will be a new entry in the reflog
# now you decide to discard your changes
git reset HEAD~1 --hard
- At this point a new entry is added to your reflog
- The commit which you made is a dangling commit which can be
recovered on your local machine but does not exist on any other
repository beside yours.
这是一个非常简单的流程,但是您可以从该流程中了解到,即使您可以备份 reflog(并且您可以简单地备份.git/logs
),它也将毫无用处。
还有许多其他类似的情况会使您的 reflog 无用。
这就是为什么它在您的机器上而不是在任何其他机器上的原因。
假设现在你有我的 reflog 备份,如果我已经执行,它对你没用rebase
,filter-branch
等等。