合并已经推动了提交

时间:2011-02-20 22:21:52

标签: git

哦,大家好,

我是一个混蛋新手,我搞砸了。我想我需要使用rebase,这让我陷入恐慌模式。请帮帮我:-D

所以,我在一台名为alice的机器上克隆了一个回购。我做了大约20次提交然后尝试并且没有推动,因为alice失去了互联网连接。所以我使用USB记忆棒将我编辑的回购品移动到名为bob的机器上,在那里我做了推送,一切都比预期好。 更新:此时我将我的原点复制到一个单独的遥控器(我将我的项目从github移到我自己服务器上的私人仓库)。我在alice上添加了这个新遥控器给我的回购,但我没有从它或任何东西拉,因为alice没有互联网连接。

然后我又回到爱丽丝身边,忘记了我已经做了推动,做了20多次提交。自从上次推送到旧源以来,我已经回复alice有40次提交,远程来源的40个提交中有20个已经推送更新:远程dijxtra也已经推送了40个提交中的20个。我尝试推送到dijxtra,但它失败了(见底部)。

我该怎么办?我认为这是一个非常简单的问题,这是一个非常简单的解决方案,但我无法绕过它...更新:我不希望推动原点(这可能很容易),因为它是一个公众repo和我添加了一些不得发布的机密数据。

编辑: 这是我尝试推送最新版本(40次提交)时得到的结果。这是我试图推动爱丽丝的回购:

nick@rilmir:~/tmp/simulator$ git push dijxtra master
dijxtra@dijxtra.net's password:
To dijxtra@dijxtra.net:git/simulator.git
 ! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'dijxtra@dijxtra.net:git/simulator.git'
nick@rilmir:~/tmp/simulator$

EDIT2: 现在我记得:我不是在追求起源。没错,这可能就是问题所在。让我更新帖子。更新以斜体显示。

2 个答案:

答案 0 :(得分:2)

如果Alice上的最初20次提交与远程仓库中存在的20次提交相同,那么您应该能够从Alice推送,并且它将处理将20次新提交添加到远程仓库。

如果你一直担心搞乱Alice的本地回购,首先复制回购,然后尝试推送(但是在这种情况下我不会担心,因为你最初只是要从Alice推出到远程,所以Alice上的本地仓库没有变化。 Git通常对其错误消息很有帮助,所以如果这不起作用,请告诉我错误信息是什么。

答案 1 :(得分:0)

这很容易。来自alice:git rebase --onto <bob's last commit> <alice's first new commit>

然后你可以推。

(请注意,正如另一个答案所述,如果您所做的只是复制提交并从另一台机器推送它们,那么很有可能这不是必需的。它们将具有相同的提交哈希值并且git将匹配它尽管如此,反叛应该是无害的!)