La twig actual y la remota han divergido

En primer lugar, presiono mi compromiso con GERRIT para su revisión

En segundo lugar, mi compañero de equipo verificó mi compromiso y lo envió al repository

En tercer lugar, me sincronizo con el command git fetch, y encontré que mi twig actual y la twig remota han divergido cuando compruebo el estado

Quiero saber cómo sucede y cómo evitarlo. ¿Alguien puede ayudarme?

Todos los commands que he corrido

git add app/Http/Controllers/StatisController.php

git commit

git push origin HEAD:refs/for/<remote_branch>

Después de la confirmación enviada

git fetch

git status

Y recibí el post de la siguiente manera:

En el cliente de la sucursal Sucursal y 'origin / remote_branch' han divergido, y tienen 1 y 1 commit diferente cada uno, respectivamente.

(use "git pull" para fusionar la twig remota con la suya)

Causa principal

Con la información que tenemos es imposible saber pero, probablemente, su confirmación haya sido automatizada o autorrebasada por Gerrit. Los cambios se automatizan / autorebasan dependiendo de la estrategia de envío configurada en cada proyecto. Para saber qué estrategia de envío utiliza un proyecto, haga lo siguiente:

  1. Haga clic en Proyectos > Lista
  2. Encuentra el proyecto
  3. Haga clic en el nombre del proyecto
  4. Haga clic en la pestaña General
  5. Ver el campo Enviar tipo

Cómo evitar problemas con esto

Olvídese de sus sucursales locales (elimínelas) después de que sus confirmaciones se fusionen en la sucursal remota (presentada en Gerrit) y siempre comience una nueva sucursal para trabajar en los nuevos cambios.

Para trabajar en el cambio 1

 git fetch git checkout -b LOCAL-1 /origin/REMOTE # Work on the change git add . git commit git push origin HEAD:refs/for/REMOTE 

Si quieres trabajar en el cambio 2:

 git fetch git checkout -b LOCAL-2 /origin/REMOTE # Work on the change git add . git commit git push origin HEAD:refs/for/REMOTE 

Si necesita volver a trabajar el cambio 1:

 git checkout LOCAL-1 # Rework the change git add . git commit --amend git push origin HEAD:refs/for/REMOTE 

Cuando el cambio 1 se fusiona (envía) a Gerrit:

 git branch -D LOCAL-1 

En resumen: sus sucursales locales no deberían seguir las sucursales remotas.

Tienes dos opciones si tu twig ha divergido.

  1. Combina la sucursal remota con la sucursal local. Este es el comportamiento pnetworkingeterminado de git pull pero esto dará como resultado la creación de una fusión de compromiso y desorderar el historial de su twig.

  2. Vuelva a establecer la base de su twig local en la remota ( git rebase origin/the-branch ). Esta es mi opción preferida ya que crea un historial de confirmaciones limpio y fácil de leer.

El command para sincronizar la twig actual es git pull . git pull es equivalente a git fetch + git merge . Ya has ejecutado git fetch , por lo que puedes llamar a git merge manualmente (digamos que la twig actual es master ):

 git merge origin/master 

O puede mover la twig a la fuerza:

 git reset --hard origin/master 

O simplemente puedes ejecutar pull :

 git pull origin master