我从git克隆了存储库A的主分支,并创建了我自己的分支Li。 我前段时间做了一些改动,把当地李的内容推到了偏远的李。
现在我已经从远程主服务器向我的本地主分支以及从本地主分支到本地Li的一些更新,我正在尝试将更新从本地Li推送到远程Li。 但是,当我尝试运行时:
git checkout Li
git push origin Li
我收到以下错误:
error: failed to push some refs to 'git@github.com:anodejs/system.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
请注意我的本地主分支已更新(我调用了git pull origin master)并合并到本地Li分支。但是,我确实在本地Li添加了一个新文件,因此本地Li与本地主人不同(但这不应该,对吧?)
谢谢, 李
答案 0 :(得分:36)
更新被拒绝,因为推送的分支提示位于其遥控器后面。
git config --global push.default current
尝试上面的命令将当前分支设置为默认值
git push
答案 1 :(得分:29)
使用git fetch && git log Li..origin/Li
查找差异。自从你上次推动以来,我猜你已经重新定位或以其他方式重新编辑Li
,但是该命令应该告诉你遥控器中究竟是什么不在本地。您可以使用三点语法找到(但不是两者)中的内容:git log Li...origin/Li
。
如果预期差异,则只需与git merge origin/Li
合并,然后git push
合并。如果更改不受欢迎,请使用git push -f origin Li
覆盖遥控器。只有在你想放弃遥控器的改变时才这样做。
答案 2 :(得分:1)
运行以下行:
git fetch
git remote prune origin
他们刷新你的所有裁判。 然后用一些GUI git客户端(例如mac上的gitx)查看源树的外观。它应该有助于找出问题。
另外请确保您的回购不是只读并且您有权写入。
答案 3 :(得分:0)
您可以强制推送更改到远程地址,但它可以生成新的远程分支
git push subtree_remote_address.git `git subtree split --prefix=subtree_folder`:refs/heads/branch --force
答案 4 :(得分:0)
git branch --set-upstream-to = origin / master
如果您在'master'分支上遇到错误,请尝试以下命令:
git branch --set-upstream-to = origin / master
或者,快捷方式: git push -u origin master