在强制推送之后 - 历史记录在其他开发人员存储库中同步 - 是否可以?

时间:2016-08-25 11:07:31

标签: git

这是我上一个问题的后续跟进:

Fix history after forced push

问题是为什么在强制推送之后,历史记录在其他开发人员存储库中不同步。答案是,执行git pull后,其他开发人员将其本地历史记录与服务器中的历史记录合并。因此,如果我从顶部删除了一个提交并强制推送它,那么它仍将位于其他开发人员存储库的顶部。

现在到了这一点,今天我再一次测试了这个场景(这次是与公司的git服务器 - 它使用了gerrit)。我看到上述历史合并不会发生。

我做了什么:

我有一个中央存储库,我已将其克隆到两个本地文件夹中。我已经创建了一个用于测试的远程分支,然后推送到它几个提交。它们的日志如下所示:

git log --preety=oneline
962937062641327e4ad9d83ee7ead97f6c5a3bc7 One test change
08667125120a39b24c2006d5a63f6e1be61828a4 Code fixes - extra comment
...

然后确保两个本地存储库都已同步。

然后在本地的reposotory,lests说repo1,我删除了顶级提交:

git reset --hard 086671251

并使用git push -f origin HEAD:dev/mike-test3

推送repo1

然后在第二个本地报告中,我执行了git pull,现在让我感到困惑的是提交962937062实际上已被删除,下面是git在输出时给出的:

git pull
remote: Counting objects: 10, done
remote: Finding sources: 100% (6/6)
Unpacking objects: 100% (6/6), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
From [...........]
 + 9629370...0866712 dev/mike-test3 -> origin/dev/mike-test3  (forced update)
   18ab880..bc08478  master     -> origin/master
First, rewinding head to replay your work on top of it...

即使git status显示我没有待推送的待处理提交。

我从前一个问题中略微改变了一个推荐。从git reset HEAD^ --hardgit reset --hard SHA1,前一个对我来说不起作用(不应该是HEAD~1?)。

0 个答案:

没有答案