【问题标题】:git non-fast-forward rejected with upstreamgit non-fast-forward 被上游拒绝
【发布时间】:2016-04-12 04:42:30
【问题描述】:

我有一个 git repo,其中一个 master 设置在上游,还有一个 dev 分支,它从这个 master 获取每个流。

我在我的 dev 分支上提交了一些更改,这些更改仅对这个特定的分支有用,而不是对 master 有用,我

我当前的分支是:

git status
On branch dev
Your branch is ahead of 'master' by 2 commits.

当我这样做时,我的提交是可见的

git diff origin/master..HEAD

我的分支是最新的(并且像以前一样通过 master):

git pull
From .
 * branch            master     -> FETCH_HEAD
Already up-to-date.

但是当我推动时,我被打了:

git push origin
To https://my_git.git
 ! [rejected]        dev -> dev (non-fast-forward)
error: failed to push some refs to 'https://my_git.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

任何提示将不胜感激,我看过几个这样的帖子: git push rejected non-fast-forwardGit non-fast-forward rejected ,但它们似乎都不适用于我的情况。

谢谢

【问题讨论】:

  • 您(或者更确切地说是您的 git 客户端)正在尝试将分支 dev 推送到服务器,这显然无法快速转发。所以你应该要么做get fetch dev 和rebase,或者只是用git push origin master 推动主分支
  • dev 分支是否已经存在? git fetch origin dev && git status 会很有帮助。
  • 当我执行 git fetch dev 我得到了致命的:'dev' 似乎不是 git 存储库致命:无法从远程存储库读取。请确保您具有正确的访问权限并且存储库存在。但事实上,我已经在我的开发分支上,所以它是存在的,我的用户可以访问它。有什么想法吗?
  • git fetch origin dev From my_git * branch dev -> FETCH_HEAD
  • git checkout master git push origin master 一切都是最新的

标签: git github


【解决方案1】:

你的问题在这里:

git push origin 

您没有指定要推送的任何分支。
假设您使用的是 git pull/push。在您的情况下,它试图推送 ALL 您的分支,其中一个会产生错误。

这会为你准备的

# get all latest changes from the remote
git fetch --all

# merge the changes to the local repository
git pull origin dev 

# push the changes to the remote
git push origin dev

Git v2.0 发行说明

向后兼容性说明

当 "git push [$there]" 没有说明要推送什么时,我们使用了 到目前为止的传统“匹配”语义(您的所有分支都已发送 到远程只要已经有同名的分支 在那边)。

在 Git 2.0 中,现在默认是“简单”语义, 推动:

  • 只有当前分支到同名分支,并且只有 当前分支设置为与该远程集成时 分支,如果您推送到与您获取相同的远程;或

  • 只有当前分支到同名分支,如果你 正在推送到您通常不从中获取的远程。

你可以使用配置变量“push.default”来改变 这。如果您是一位想要继续使用 “匹配”语义,您可以将变量设置为“匹配”,对于 例子。阅读文档以了解其他可能性。

【讨论】:

  • 我也试过做“git push origin dev”,我得到了同样的错误,所以很明显它来自我的开发分支而不是后面的上游,但我仍然无法解决它并正确推送
  • 试试这个:git pull origin dev && git push origin dev
  • @CodeWizard 我在某处读到这也是您使用 git init 初始化本地存储库时引起的,这是什么
猜你喜欢
  • 2013-09-30
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 2015-02-28
  • 2015-07-13
  • 2012-05-12
  • 2019-01-28
  • 2016-10-30
相关资源
最近更新 更多