Git 强制推送之后-历史记录在其他开发人员存储库中同步-可以吗?
这是我上一个问题的后续: 问题是为什么在强制推送之后,历史不会在其他开发人员存储库中同步。答案是,其他开发人员在执行了Git 强制推送之后-历史记录在其他开发人员存储库中同步-可以吗?,git,Git,这是我上一个问题的后续: 问题是为什么在强制推送之后,历史不会在其他开发人员存储库中同步。答案是,其他开发人员在执行了git pull之后,会将他们的本地历史记录与来自服务器的历史记录合并。因此,如果我从顶部删除一个提交并强制推送它,那么它仍将位于其他开发人员存储库的顶部 现在说到这里,今天我再次测试了这个场景(这次是git服务器公司——它使用gerrit)。我看到上面的历史合并并没有发生 我所做的: 我有一个中央存储库,我已经将它克隆到两个本地文件夹。我已经创建了一个用于测试的远程分支,然后
git pull
之后,会将他们的本地历史记录与来自服务器的历史记录合并。因此,如果我从顶部删除一个提交并强制推送它,那么它仍将位于其他开发人员存储库的顶部
现在说到这里,今天我再次测试了这个场景(这次是git服务器公司——它使用gerrit)。我看到上面的历史合并并没有发生
我所做的:
我有一个中央存储库,我已经将它克隆到两个本地文件夹。我已经创建了一个用于测试的远程分支,然后将它推到了几次提交。他们的日志如下所示:
git log --preety=oneline
962937062641327e4ad9d83ee7ead97f6c5a3bc7 One test change
08667125120a39b24c2006d5a63f6e1be61828a4 Code fixes - extra comment
...
然后确保两个本地存储库都是同步的
然后在本地repostory中,lests说repo1,我已经删除了top commit:
git reset --hard 086671251
并使用git push-f原始头:dev/mike-test3推送repo1
然后在第二个本地repozitory中,我执行了git pull
,现在让我困惑的是commit 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^--hard
到git reset--hard SHA1
,前一个对我来说不起作用(HEAD^不应该是HEAD~1?)