git push重写了我的更改

git push重写了我的更改,git,Git,我和我的一位同事正在从事git master分支的工作,该分支的提交历史如下 A->B->C->D->E->F->头部 现在,我的同事在commit#“C”上查看了主分支,并开始制作和提交本地更改。与此同时,我用“D”和“E”将主分支向前移动 后来,我的同事通过提交“F”推送了他的更改,而没有执行拉操作,这个提交基本上取消了我在提交“D”和“E”中的更改。这是预期的吗?为什么git没有抱怨他的工作区滞后,他应该在推送更改之前将其同步到头部?听起来像是你的同事强制推送了分支,如果你所做的提交不在他

我和我的一位同事正在从事git master分支的工作,该分支的提交历史如下

A->B->C->D->E->F->头部

现在,我的同事在commit#“C”上查看了主分支,并开始制作和提交本地更改。与此同时,我用“D”和“E”将主分支向前移动


后来,我的同事通过提交“F”推送了他的更改,而没有执行拉操作,这个提交基本上取消了我在提交“D”和“E”中的更改。这是预期的吗?为什么git没有抱怨他的工作区滞后,他应该在推送更改之前将其同步到头部?

听起来像是你的同事强制推送了分支,如果你所做的提交不在他的本地分支中,它将丢弃这些提交。当您尝试推送并且您的分支没有包含远程端上的所有提交时,Git通常会抱怨。我唯一一次看到Git以静默方式更新是在将存储库设置为镜像时

我不喜欢取消强制推送的功能,因为在某些情况下,这样做是正确的。如果确实要禁用它们,可以通过在服务器端存储库中设置
receive.denynonfastforts
来实现。您可能还需要设置
receive.denyDeletes
,否则有人可以删除master ref,然后安装一个新的


您可以使用来验证主机是否没有被倒带。Git的contrib区域能够做到这一点,还有其他一些漂亮的功能。

也许他做到了
Git push-f
?也可能是这样,对于合并冲突解决,他只接受了自己的提交。推之前的提交是否仍在git日志中?