为什么"git push"被拒绝了?("git pull"没有帮助)

Mis*_*hko 16 git git-push

我目前的分支是my_branch.我试图将更改推送到远程仓库:

$ git push
Counting objects: 544, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (465/465), done.
Writing objects: 100% (533/533), 2.04 MiB | 1.16 MiB/s, done.
Total 533 (delta 407), reused 0 (delta 0)
To git@......git
   4ed90a6..52673f3  my_branch -> my_branch
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@......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.
Run Code Online (Sandbox Code Playgroud)

试图git pull导致:

$ git pull
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误?我怎么能解决这个问题并git push成功执行?

mea*_*gar 28

我目前的分支是my_branch.

那是你的问题.当你拉动时,Git告诉你你的分支my_branch是最新的,而不是 master,这origin/master使得快进合并无法实现.

为了推动主人,你需要检查master和拉.这将合并等待的更改,origin/master并允许您推送自己的更改.

git checkout master
git pull
# resolve conflicts, if any
git push
Run Code Online (Sandbox Code Playgroud)

  • 如果你只想推"my_branch":git push origin my_branch. (3认同)

The*_*ail 7

[如果您的主分支已经配置为在pull上进行rebase,那么您只需要对其他answerd中描述的master分支进行拉取,否则:]

如果您收到非快进消息,这意味着您只能在现有提交的基础上推送提交,但您尝试不这样做.在推送之前对master进行rebase(假设远程称为origin):

git checkout master
git pull --rebase origin master
git push
Run Code Online (Sandbox Code Playgroud)

另见这个问题:git rebase和git push:非快进,为什么要使用?