cómo reaparecer en Git

¿Qué command (s) de GIT no interactivo logran el cambio de Antes a Después en cada caso?

1a. volver a ser padre I

Antes de:

A---B---C---D 

Después:

  C'---D' / A---B 

1b. nueva crianza II

Antes de:

  C---D / A---B 

Después:

  C / A---B---D' 

1c. nueva crianza III

Antes de:

  C / A---B---D 

Después:

  C---B'---D' / A 

Todas estas parecen aplicaciones de git rebase --onto .

1a. volver a ser padre I

Antes de:

 A---B---C---D 

Después:

  C'---D' / A---B 

Configure las twigs para labelr las confirmaciones particulares y luego rebase en.

  1. git checkout -b ex1a-b B
  2. git checkout -b ex1a-d D
  3. git checkout -b ex1a-a A
  4. git rebase --onto ex1a-a ex1a-b ex1a-d

1b. nueva crianza II

Antes de:

  C---D / A---B 

Después:

  C / A---B---D' 

Creando twigs similares a las anteriores: git rebase --onto ex1b-b ex1b-c ex1b-d .

1c. nueva crianza III

Antes de:

  C / A---B---D 

Después:

  C---B'---D' / A 

De nuevo con las twigs, pero ahora solo git rebase ex1c-c ex1c-d .

Depende de tu definición de B' , C' y D' .

Si quiere moverse por los parches , para que (en el primer ejemplo) git diff BC == git diff A C' , entonces quiera "rebase" (no "reparent") usando git rebase como lo describe Emil .

Si, por otro lado, quieres moverte por las instantáneas , entonces realmente quieres "reparar". Para hacer esto, sugiero usar git reparent .

Lo más probable es que realmente desee volver a establecer la base y no reparen, pero como reference, aquí están los commands para reparenting. Son algo complicados porque esto no es algo normal de hacer.

(Lo siguiente asume que actualmente se encuentra en una sucursal en D.)

1a. volver a ser padre I

 git rebase -i B # Select the "edit" command for C git reparent -p A git rebase --continue 

1b. nueva crianza II

 git reparent -p B 

1c. nueva crianza III

 git rebase -i A # Select the "edit" command for B git reparent -p C git rebase --continue