Git da un error de 'actualizaciones no rápidas' incluso después de 'git pull'

Github es el repository pnetworkingeterminado para mi proyecto (solo "origen" renombrado como "github"). Algo ha sucedido, por lo que "git push" provoca un error de "actualizaciones no rápidas", aunque funciona "git push github master". "git pull" y "git pull github master" indican un estado actualizado. ¿Cómo puedo (a) asegurarme de que no haya cambios no fusionados en Github y (b) corregir el error de no avance rápido?

$ git status # On branch master nothing to commit (working directory clean) $ git pull Already up-to-date. $ git pull github master From github.com:MikeBlyth/mission_net * branch master -> FETCH_HEAD Already up-to-date. $ git push github master Everything up-to-date $ git push To git@github.com:MikeBlyth/mission_net.git ! [rejected] add_command -> add_command (non-fast-forward) error: failed to push some refs to 'git@github.com:MikeBlyth/mission_net.git' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes (eg 'git pull') before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details. 

Mi file de configuration de git es

 [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "github"] url = git@github.com:MikeBlyth/mission_net.git fetch = +refs/heads/*:refs/remotes/github/* [branch "master"] remote = github merge = refs/heads/master [remote "heroku"] url = git@heroku.com:joslink.git fetch = +refs/heads/*:refs/remotes/heroku/* merge = refs/heads/master [remote "heroku"] url = git@heroku.com:joslink.git fetch = +refs/heads/*:refs/remotes/heroku/* 

La syntax de 'git push' admite tanto una versión explícita como una versión abreviada. La versión explícita git push github master funciona para usted. La versión abreviada de git push no.

Si usas la versión abreviada, no le digas a git qué control remoto usar y qué twig local se enviará a qué twig remota. Por lo tanto, Git tiene que adivinar a qué te refieres.

Puede configurar esto con la configuration de su control remoto y la configuration push.default:

  push.default Defines the action git push should take if no refspec is given on the command line, no refspec is configunetworking in the remote, and no refspec is implied by any of the options given on the command line. Possible values are: · nothing - do not push anything. · matching - push all matching branches. All branches having the same name in both ends are considenetworking to be matching. This is the default. · upstream - push the current branch to its upstream branch. · tracking - deprecated synonym for upstream. · current - push the current branch to a branch of the same name. 

Eche un vistazo a git branch -vv para verificar qué twig rastrea su sucursal actual. Luego revisa git config --get push.default para verificar que está haciendo lo que esperas.

La explicación podría estar relacionada con el refspec pnetworkingeterminado utilizado para el " github " remoto:

 +refs/heads/*:refs/remotes/github/* 

Un simple git push empujaría:

  • al remoto asociado al maestro (aquí " github "), porque el master es la twig actual (de acuerdo con el git status )
  • todas las otras twigs (twigs master y add_command )

add_command es el que no está sincronizado con github remote.

 git checkout add_command git pull github 

Entonces un git push funcionaría.