为什么'git push'(不带-f)会覆盖远程历史记录?

时间:2020-05-14 12:58:19

标签: git github push git-push git-pull

我有一个远程存储库,我在仓库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所指出的错误,这时,我只是认为这是由错误引起的。

0 个答案:

没有答案
相关问题