Totalmente trabado en git – "git push" no funciona, y "git pull" no arregla

Decidí tratar de entretenerme con Git hoy e intentar aprender cómo funciona su sistema de ramificación. Mala idea. De alguna manera me he puesto en un estado en el que he comprometido un cambio en una sucursal, y cuando hago un "git push" obtengo:

To git@github.com:LAW/Repo.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'git@github.com:LAW/Repo.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. 

Lo he visto varias veces, y he hecho "git pull" para resolverlo, aunque no estoy seguro de por qué o cómo lo resuelve. El problema es que no está funcionando ahora. Hago "git pull" y obtengo:

 "Already up-to-date." 

Y el problema persiste Entonces mi pregunta es … ¿ahora qué? No puedo empujar desde la twig, por lo que está esencialmente muerto, pero internet no tiene mejor consejo que "git pull" para arreglar esto. ¡No hace falta decir que esto es MUY frustrante!

EDITAR Un comentarista solicitó la salida de "git branch -a". La twig en cuestión es "PersonalSite"

 * PersonalSite master remotes/origin/HEAD -> origin/master remotes/origin/PersonalSite remotes/origin/master 

Debería poder simplemente actualizar la twig principal:

 git checkout master git pull 

Para verificar:

 git checkout PersonalSite git push # Should say "Everything up-to-date" 

Su inserción rechazada es master -> master. Pero la twig en la que estás es PersonalSite. Parece que su twig principal tiene una confirmación local que remota no, pero le faltan confirmaciones desde el control remoto. Sin embargo, estás tratando de git pull personal en PersonalSite. No estoy seguro de qué twig está tratando de extraer, probablemente origin/master (esto depende de la información previa que haya configurado al crear la twig). git push no intenta presionar PersonalSite ya que, de forma pnetworkingeterminada, solo empuja twigs "coincidentes" (por ejemplo, twigs que ya existen en ambos lados) y PersonalSite solo existe localmente.

¿Qué estás tratando de lograr aquí? Si desea enviar PersonalSite a remoto, use git push origin PersonalSite . Si quieres arreglar tu twig principal, échale un vistazo y luego ejecuta tu git pull (o cualquier otra cosa que quieras hacer para arreglarlo).

La twig que se rechaza es la twig master . No estás en la twig master , estás en PersonalSite twig PersonalSite , que (como sugiere la salida de git pull ) ya está actualizada.

git push sin arguments adicionales puede configurarse de diferentes maneras (ver la sección push.default de la git help config de git help config ). Por defecto, empuja todas las twigs correspondientes. En este caso, está intentando enviar master , pero la twig master no está actualizada, por lo que falla la inserción. El post de error es un poco engañoso.