我有一个远程存储库,我在仓库A中进行了一些本地提交(〜6次提交),并将这些提交推送到GitHub,然后进行了一些我未提交或推送的更改。
稍后,我在GitHub上重命名了该存储库,而不是更新引用,而是克隆到另一个目录,例如本地存储库B,我进行了更多提交(〜30个提交)并将其推送,然后删除了存储库B。 / p>
然后,我注意到回购A已取消推送更改,我没有拉出刚刚提交的更改的新提交,这是历史发生分歧并以$ git push
(没有-f或-力),则输出如下:
...
remote: This repository moved. Please use the location:
remote: <new URL of the repo>
...
+ 3d93603...cec405b master -> master (forced update)
它替换了从本地存储库B推送的所有提交
后来,我设法使用GitHub's reflog恢复了这些提交。
我的问题是为什么会这样?我不知道git可以在不使用-f
的情况下覆盖远程历史记录,这还意味着git pull
可以像git push
那样重写历史记录吗?
我从没碰过push.default配置,我的版本是2.17.1,这是link to the GitHub API events of the repo,如果有帮助,我没有对.gitconfig进行任何特殊更改。
编辑: 我复制了实验,现在它给了我torek所指出的错误,这时,我只是认为这是由错误引起的。