如何解决这个git错误

时间:2011-11-30 19:01:59

标签: git

哎呀!请原谅错误。我混合了苹果和橘子(两个不同的项目)。谢谢你的回答。他们没有浪费。

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

我从this question专门Josh Lindsey's answer得到了一个很好的解决方案。它适用于我所拥有的一个项目,但另一个项目我遇到了一些错误,并想知道修复它们的最佳方法。

我按照初始化远程目录的说明进行操作。

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

amr@h2oamr:~/bin$ git push origin master
cvsuser@h2oamr's password: 
To cvsuser@h2oamr:/home/cvsuser/master_source_repository_git/ics/addr_verify_clj.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'cvsuser@h2oamr:/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.

3 个答案:

答案 0 :(得分:1)

根据您真正想做的事情,除了已经提出的建议外,您还有两个其他选择:

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

  2. git push -fgit push --force将您的本地分支推送到远程分支并覆盖其现有的头部,无论后果如何(即使您的本地分支与其相比已过时)

  3. 通常我会在决定是否做2之前做1。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

当您对该回购的视图已过期时尝试推送到远程仓库时会发生这种情况。其他人推到了那个仓库,你当地的git对那个仓库的看法是落后的(或很少)。因此,需要git将您的更改合并到远程仓库中。 Git不想这样做,因为人类做得更好。

所以git告诉你要拉一下。这将使您对远程仓库的本地视图保持最新状态,然后您可以干净地将更改推送到其中。这可能需要您合并,这是一个手动/人为导向的过程。 Git旨在确保手动/人类类型的事物由人类完成。

TL; DR:执行git pull,根据需要合并更改,然后再次按下。就像错误消息所说