为什么即使我拉了之后我的推动也被拒绝了?

rip*_*234 1 git

$ git branch
  master
* portal
$ git fetch
$ git merge origin/portal
Already up-to-date.
$ git pull
Already up-to-date.
$ git push
To git@github.com:ripper234/Commerce-Sciences.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:ripper234/Commerce-Sciences.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)

通常我会gitk -all尝试看看到底发生了什么,但这是在没有图形shell的Linux机器上.

ham*_*mar 5

请注意错误消息中的这一行:

! [rejected]        master -> master (non-fast-forward)
Run Code Online (Sandbox Code Playgroud)

你合并了portal分支,但你也试图推送master,因为git push默认情况下会尝试推送所有存在的分支origin.试试这个:

$ git push origin portal
Run Code Online (Sandbox Code Playgroud)

  • @ ripper234:`git push`将每个分支推送到远程*中具有匹配名称的分支,只要具有该名称的分支已存在于远程端*.如果要将该行为更改为不太令人惊讶的行为,请查看`push.default`配置选项的文档. (3认同)
  • @ ripper234:如果`origin`存在于`origin`中,我会*猜测`git push`的行为是在无法推送`master - > master`之后停止的.一般来说,总是指定要推送的分支或将`push.default`设置为`tracking`更安全. (2认同)