2011-11-30 30 views
0

哎呀!请原谅错误。我混合了苹果和橘子(两个不同的项目)。感谢您的答案。它们不会被浪费。如何解决这个混帐错误

我在提出这个问题时的全部目的是,我试图将一个开发目录转移到服务器上,然后使用git commit在将来更新服务器。

我从this question特别是Josh Lindsey's answer得到了很好的解决方案。对于我拥有的一个项目来说,它工作得很好,但对于另一个项目,我得到了一些错误,并想知道修复它们的最佳方法。

我确实遵循了初始化远程目录的说明。

当我从本地目录发出git push origin master命令时,出现这些错误。

[email protected]:~/bin$ git push origin master 
[email protected]'s password: 
To [email protected]:/home/cvsuser/master_source_repository_git/ics/addr_verify_clj.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:/home/cvsuser/master_source_repository_git/ics/addr_verify_clj.git' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 
+0

请[不签名或标语添加到您的帖子]之前做1(http://stackoverflow.com/faq#signatures)。 – meagar

+0

您能指出签名或标语吗?我没有看到它。谢谢。 – octopusgrabbus

+0

它不在那里,因为我删除了它。它*是*“cmn”,贴在你的每一个帖子上。 – meagar

回答

1

取决于你真正想做的事,你除了那些已经被建议其他两个选项:

  1. git fetch更新远程分支的状态,而不自动合并

  2. git push -fgit push --force到你的本地分支推到远程分支也不管覆盖的后果,其现有的头(即使您当地的分行正在过时,因为相比于它)

通常我会决定是否做2

0

首先,您需要执行git pull以从远程存储库获取最新更改。这将自动合并(并在解决可能的冲突后),并且您将能够将代码推回到远程。

+0

本地存储库是最新的。我将所有我已经完成的所有事情都移到了服务器上的git存储库中。 (并且,是的,我是git的新手)。 – octopusgrabbus

+0

@octopusgrabbus:在执行从本地到远程的推送之前,您是否在服务器上执行了'git init --bare repo_name'? –

+0

我不相信我在最后有repo_name参数。我会去试试看。 – octopusgrabbus

0

当您尝试推送到远程回购时,如果您的回购视图过期,会发生这种情况。其他人推动回购,你当地的git对回购的看法是背后的一个承诺(或少数)。所以这需要git将您的更改合并到远程仓库。 Git不想这样做,因为这样做更好。

所以git告诉你做一个拉。这将使您的本地远程回购视图保持最新状态,从而使您能够彻底将更改推送到其中。这可能需要您合并,这是一个手动/以人为导向的流程。 Git旨在确保手动/人类类型的东西由人类完成。

TL; DR:做一个git pull,如果需要合并更改,然后再次push。就像错误消息指出

+0

基本上,我发布推送的目录是最新的。我想让遥控器成为新的存储库。 (并且,是的,我是git的新手。) – octopusgrabbus

+0

我建议做一个'git fetch',然后做一个'git diff master origin/master',看看有什么不同。如果差异没问题,做一个'git pull'然后做'push'' –

+0

我不想合并。我希望本地目录成为主人。 – octopusgrabbus