La database de Git muestra un avance rápido

Estoy enterrado en lo profundo de un git.

Cómo llegué allí:

No soy un experto en git. Por favor, háganme una aclaración si me falta detalle. Ejecuté los siguientes commands hace unos días para enviar mis cambios a una sucursal remota.

% git checkout master % git pull % git checkout networkingactor_changes <-- this is the branch that I made my changes % git commit -m "changes" # I added my changes previously % git rebase master % git push origin networkingactor_changes # pushed changes to remote branch 

No todos tienen el permiso de escritura para fusionar los cambios a la twig principal. El tipo que tiene el permiso de escritura en el repository remoto me dijo que hay un conflicto y hace una rebase y envía de nuevo. Así que hoy corrí siguiendo commands en el order exacto.

 vagrant@vagrant-ubuntu-trusty-64:~/oblog$ git add oblog/static/css/styles-custom.css vagrant@vagrant-ubuntu-trusty-64:~/oblog$ git add oblog/static/js/networkingactor.upload_image.js vagrant@vagrant-ubuntu-trusty-64:~/oblog$ git add oblog/static/images/loading.gif vagrant@vagrant-ubuntu-trusty-64:~/oblog$ git commit -m "Throw a toast when user upload an non-image file with image extension" vagrant@vagrant-ubuntu-trusty-64:~/oblog$ git branch vagrant@vagrant-ubuntu-trusty-64:~/oblog$ git checkout master vagrant@vagrant-ubuntu-trusty-64:~/oblog$ git pull vagrant@vagrant-ubuntu-trusty-64:~/oblog$ git checkout networkingactor_changes vagrant@vagrant-ubuntu-trusty-64:~/oblog$ git rebase master vagrant@vagrant-ubuntu-trusty-64:~/oblog$ git merge master vagrant@vagrant-ubuntu-trusty-64:~/oblog$ git branch vagrant@vagrant-ubuntu-trusty-64:~/oblog$ git push origin networkingactor_changes 

Parece que este set de commands me absorbió en un remolino del que no puedo escaping.

Síntomas:

La última línea del código anterior arroja el siguiente error

 ! [rejected] networkingactor_changes -> networkingactor_changes (non-fast-forward) error: failed to push some refs to 'https://git.<domain>.com/web/oblog.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (eg hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

Así que seguí el consejo de mi compañero SO

  1. http://sofes.miximages.com/a/20467414/1431184
  2. http://sofes.miximages.com/a/6897674/1431184

pero el problema aún persiste.

LABLE:

Cuando rebase mi twig con master (localmente), arroja algunos conflictos que luego corrijo manualmente y hago una rebase –continúe. Rebase fue exitoso. Luego empujo mi twig nuevamente hacia el origen, ¡me mostró el mismo error! [rechazado].

Como sugirieron git y SO, continúo con los cambios en mi twig remota a mi sucursal local (networkingactor_changes). Luego ejecutado

 git rebase master 

que me vuelve a poner en la ETIQUETA . Esto sigue y sigue.

Tenga en count que mi command push funciona si no lo rebase con master, pero el propietario del git remoto aún verá el conflicto cuando intente fusionar mi branch (networkingactor_changes) en master.

Cada vez que rebase su twig networkingactor_changes en el master , está trayendo los últimos cambios desde la última twig a la anterior. Explicar a modo de diagtwig:

 master: A -- B -- D networkingactor_changes: A -- B -- C 

Este diagtwig simple asume que usted se bifurcó de master en la confirmación B Desde entonces, has hecho que uno se comprometa con networkingactor_changes ( C ) y alguien más haya hecho un commit a la twig master ( D ). Ahora si ejecuta los siguientes commands

 git checkout networkingactor_changes git rebase master 

terminarás con el siguiente diagtwig

 master: A -- B -- D networkingactor_changes: A -- B -- D -- C' 

Rebasing logró introducir los nuevos commits de master pero lo hizo reescribiendo el historial de su twig networkingactor_changes . Esto es algo bueno (potencialmente), porque significa que el revisor puede avanzar rápidamente la twig master con sus cambios (sin compromiso de fusión). Pero tiene un efecto secundario. Ya no puedes presionar networkingactor_changes al control remoto. Probando el siguiente command

 git push origin networkingactor_changes 

le dará el post de error que ha estado viendo

! [rechazado] networkingactor_changes -> error de networkingactor_changes (no avance rápido): error al presionar algunas references a ' https: // git ..com / web / oblog.git'
pista: las actualizaciones fueron rechazadas porque la punta de su twig actual está detrás de la pista: su contraparte remota …

porque reescribió el historial de networkingactor_changes Git ya no sabe cómo ejecutar los commits en la twig remota.

Solución:

La solución que probablemente desee es forzar su twig networkingactor_changes al control remoto:

 git checkout networkingactor_changes git rebase master git push --force networkingactor_changes 

Haga esto y el post de error debería desaparecer. Esto supone que networkingactor_changes es una twig personal y no la está compartiendo con nadie.

También noté algunos otros problemas con su flujo de trabajo, por ejemplo, fusionando el master en networkingactor_changes después de volver a basarlo. Pero hacer el empuje de la fuerza al less debería mejorar tu situación.