5

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

$ 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)。我很肯定它不应该过时,因为我只从分支推送。

我有 2 个问题。

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

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

4

1 回答 1

14
  1. 见下面的更新)是的,有可能:git push --force。但是,只有在您绝对确定自上次以来没有人阅读过 repo 时才这样做push(请参阅如何将修改后的提交推送到远程 Git 存储库?进行深入讨论)。
  2. 对我来说,似乎你必须git pull先做,然后才能做到push。我不认为这是与时间相关的错误。该消息表明服务器上有更新的提交(由它们的提交哈希标识,而不是提交日期)...要查看更改的内容,请使用git fetch代替git pull并查看更改git log origin/master...

更新:与此同时,push学习了--force-with-lease确保您不会意外破坏某些东西的选项:https ://developer.atlassian.com/blog/2015/04/force-with-lease/ 。--force尽可能喜欢这个!

于 2011-04-01T07:11:41.790 回答