如何使用git修复本地过时错误?

时间:2011-04-01 07:01:12

标签: git conflict git-push

我正在尝试推送到远程仓库,但不断收到以下错误。

$ git push
To user@remote.net:/home/user/repos/remoterepo.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'user@remote:/home/user/repos/remoterepo.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.

git remote show origin显示master pushes to master (local out of date)。我很肯定它不应该过时,因为我只从分支机构推出。

我有两个问题。

  1. 是否可以强制本地分支覆盖远程?拉取将覆盖更改,这些更改肯定会晚于存储库中的内容。

  2. 这是我第二次或第三次遇到这个问题。我唯一能想到的是git的本地版本是git version 1.7.3.1.msysgit.0(在Windows上)而远程版本是git version 1.6.5(Ubuntu Jaunty)。 是否有可能不同的git版本可能导致一些损坏?

1 个答案:

答案 0 :(得分:11)

  1. 请参阅下面的更新)是的,有可能:git push --force。但是,只有当你完全确定自上次push以来没有人阅读过回购时这样做(请参阅How do I push amended commit to the remote Git repository?进行深入讨论)。
  2. 对我来说,在你能git pull之前,似乎更像是push。我不认为这是与时间有关的错误。该消息表明服务器上有更新的提交(由提交哈希标识,而不是提交日期)...要查看,更改了什么,请执行git fetch而不是git pull并查看使用git log origin/master ...
  3. 进行更改

    更新:与此同时,push学习了--force-with-lease选项,确保您不会意外地破坏某些内容:https://developer.atlassian.com/blog/2015/04/force-with-lease/。只要有可能,请优先考虑--force