¿Este command git revierte un repository de Github a un punto en el pasado?

La persona A envió sus files a un repository de Github, y luego la persona B envió su file al mismo repository de Github.

A no le gustó la confirmación de B, y recuperó el repository de Github nuevamente donde estaba antes del empuje de B. A afirmó usar el siguiente command para lograr eso

git push origin master -f 

y podría malinterpretar alguna parte del command, porque no estoy familiarizado con las cosas.

A no ha cambiado nada en su repository local desde su empuje.

Mis preguntas son

  • ¿Por qué no puedo encontrar el compromiso de B en la historia del repository github?
  • ¿Por qué solo hay un compromiso por parte de A, como lo que era antes del empuje de B?
  • ¿Qué hace el command que A usó? ¿Volver todo al punto anterior al empuje de B?

Gracias.

Esto es probablemente lo que sucedió:

  • inicialmente, en el repository de github, la twig maestra apunta a cometer 1.
  • B empuja sus cambios. Esto consiste en dos cosas:
    • enviando su confirmación (commit 2) al repository remoto
    • diciéndole al server remoto que la twig maestra ahora ya no apunta a cometer 1, sino a cometer 2.
  • A usa el git push origin master -f , indicándole al repository remoto que vuelva a mover la reference de bifurcación principal a la confirmación 1 (o a lo que cometa su punto de bifurcación maestro actual).

Ahora, para responder tus preguntas:

¿Por qué no puedo encontrar el compromiso de B en la historia del repository github? ¿Por qué solo hay un compromiso por parte de A, como lo que era antes del empuje de B?

La confirmación de B todavía está allí, pero ya no está siendo referenceda por ninguna twig. Cuando haces que git log esté en master , solo ves la confirmación a la que apunta esta twig y todos sus ancestros. No se mostrarán otros commit que sean hijos de commit 1 o no relacionados con commit 1.

La única forma en que encontré para listr una confirmación huérfana es hacer git reflog en una máquina que recientemente tuvo esa confirmación desprotegida.

¿Qué hace el command que A usó? ¿Volver todo al punto anterior al empuje de B?

Vea la tercera viñeta arriba.

La bandera -f significa fuerza. Solo puedo adivinar, pero lo que probablemente sucedió fue que A no tenía el cambio de B aún así que para "revertir" el cambio de B, lo único que tenía que hacer A era forzar la fuerza.

  • La confirmación de B no está presente en el logging porque A forzó la fuerza de un repository que no tenía el cambio en absoluto
  • Ver anterior
  • No exactamente. Por sí solo no revierte las cosas, pero para borrar la historia como A tendrías que usar un impulso de fuerza eventualmente.