为什么';git推送';(不带-f)覆盖远程历史记录?[GitHub]

为什么';git推送';(不带-f)覆盖远程历史记录?[GitHub],git,github,push,git-push,git-pull,Git,Github,Push,Git Push,Git Pull,我有一个远程存储库,在那里我做了一些本地提交(~6次提交),比如说repo A,并将这些提交推送到GitHub,然后我做了一些我没有提交或推送的更改 后来,我在GitHub中重命名了该repo,并没有更新本地repo中的引用,而是将其克隆到另一个目录,比如本地repo B,我进行了更多的提交(~30次提交)并推送它们,然后删除了repo B 然后我注意到repo A有未推送的更改,我没有拉取新的提交,只是提交了更改,这时历史发散,使用$git push(不带-f或--force)推送它们,然后得

我有一个远程存储库,在那里我做了一些本地提交(~6次提交),比如说repo A,并将这些提交推送到GitHub,然后我做了一些我没有提交或推送的更改

后来,我在GitHub中重命名了该repo,并没有更新本地repo中的引用,而是将其克隆到另一个目录,比如本地repo B,我进行了更多的提交(~30次提交)并推送它们,然后删除了repo B

然后我注意到repo A有未推送的更改,我没有拉取新的提交,只是提交了更改,这时历史发散,使用
$git push(不带-f或--force)推送它们,然后得到以下输出:

...
remote: This repository moved. Please use the location:
remote: <new URL of the repo>
...
 + 3d93603...cec405b master -> master (forced update)
。。。
远程:此存储库已移动。请使用以下位置:
远程:
...
+3d93603…cec405b主机->主机(强制更新)
它替换了从本地repo B推送的所有提交

后来,我使用这个工具成功地恢复了这些提交

我的问题是为什么会这样?我不知道git可以在不使用
-f
的情况下重写远程历史记录,这也意味着
git pull
可以像
git push
那样重写历史记录,是吗

我从未接触过我的push.default配置,我的版本是2.17.1,这是最新版本,如果有帮助的话,我没有对.gitconfig做任何特殊更改

编辑:
我复制了这个实验,现在它给了我torek指出的错误,在这一点上,我只是认为这是由一个bug引起的。

强制更新
表明推送确实是以某种方式强制的。。。通过设置或其他方式。是的,这是毫无疑问的,我的问题是为什么强制推?因为我没有做任何明确的操作,所以强制推送。
remote:
前缀显示来自另一个Git的消息。“repository moved”消息告诉您更新存储在您自己Git中的URL。通常,在这之后,您只会出现错误,但看起来GitHub选择了将常规推送转变为强制推送到某个存储库。你必须问他们的问题是什么,在哪里。