Cómo actualizar una twig de pago de git

A-->B 

Tengo la twig B que se bifurcó de la twig A Luego tuve que hacer algunos cambios en la twig A pero accidentalmente cometí los cambios en la twig B en Github (remota). Encontré soluciones que puedo hacer git reset --hard <commit_id> o git revert git reset --hard <commit_id> .

Entonces esto fue lo que hice en la Rama B:

  1. git revert HEAD
  2. git reset --hard <commit_id>
  3. git checkout A e hizo las correcciones necesarias
  4. git push origin A

Sin embargo, mi Rama B todavía tiene compromisos incorrectos y quiero actualizar mi twig B ya que está ramificada desde la Rama A. ¿Cómo puedo hacer eso? Puedo

 git pull --rebase origin A 

La forma más sencilla de hacerlo es especificando --onto en una rebase.

Supongo que tienes dos sucursales locales, A y B En este momento, A tiene lo que desea, y desea actualizar B para que sea una twig de A , y también desea eliminar algunas confirmaciones.

Tu mejor amigo para lidiar con estos problemas es git log . Para que sea más fácil visualizar lo que está sucediendo, use git log --oneline --graph .

El primer paso es encontrar el primer compromiso que sea exclusivo de la twig B.

 git checkout B git log --oneline --graph 

Encuentre el primer compromiso que sea único para la twig B (es decir, no sea parte de la twig A) y copie su identificación de compromiso. Por ejemplo, voy a suponer que el ID de confirmación es 4b84d26 .

Para volver a establecer la base de la twig B en la versión actual de la twig A , haga

 git rebase --onto A 4b84d26 

donde 4b84d26 sería cualquier identificación de confirmación que haya copydo anteriormente. Esto debería hacer que B esté basado en A nuevamente.

A continuación, haga git log --oneline --graph nuevamente y encuentre el ID de confirmación que apunta al compromiso al que desea regresar (es decir, los commits que realizó accidentalmente). Esta identificación de confirmación habrá cambiado desde antes debido a la rebase. De nuevo, deberías hacer git revert --hard <commit_id> y tu branch B debería tener el historial correcto.

Tenga en count que al hacer esto, está reescribiendo el historial, por lo tanto, cuando presione tendrá que hacer un empuje de fuerza, lo que podría dificultar las cosas para cualquier persona con la que esté queueborando. ¡Lo mejor es hacerles saber que está haciendo un esfuerzo de fuerza antes de hacerlo!