¿Por qué la rebase y el restablecimiento completo me dieron resultados diferentes?

He bifurcado otro repo para crear requestes de extracción para él. Nadie más está contribuyendo a ese repository durante el período descrito aquí.

Mis primeros commits los envío como una request de extracción al repository remoto. Esto es aceptado Mi segunda request de extracción tiene errores que deben corregirse, pero esto requiere revertir los files a un estado anterior, ya que el problema es que interrumpí el formateo ya que mi editor los cambió a un formatting diferente.

Esto parece ser algo para lo que puedo usar rebase. Sin embargo, cuando utilizo "git rebase upstream / master" mientras tengo mi twig principal revisada, me dicen "El maestro de la sucursal actual está actualizado". Mi twig tiene actualmente un compromiso antes de la date de inicio, y mi comprensión de la rebase es que debería mover HEAD en mi twig al último compromiso en la twig contra la que estoy trabajando.

Mientras leía la documentation para ver lo que había hecho mal, noté que se suponía que "git reset –hard" hiciera lo mismo. Así que hice "git reset –hard upstream / master" y esto tiene el efecto deseado de mover HEAD a la request de extracción aceptada de la mía.

Mi pregunta es que dado que se supone que ambos deben hacer lo mismo, ¿por qué obtuve resultados diferentes?

Sin embargo, cuando utilizo "git rebase upstream / master" mientras tengo mi twig principal revisada me dicen "El maestro de la sucursal actual está actualizado".

Eso volvería a jugar master en la parte superior de upstream/master , lo que significa que no hay nada que hacer, ya que las confirmaciones upstream/master ya forman parte de master .

Normalmente, cuando envía un PR, debe asegurarse de que se realice sobre la twig maestra upstream más actualizada, es decir, el repository original actualizado (que fue bifurcado)

 git checkout my_PR_branch git fetch upstream git rebase upstream/master 

Esto supone que su PR se realiza en una twig en lugar de en el master .
Si su PR se realizó en el master , entonces:

  • crea una twig de tu master actual: git branch mypr ; git push -u origin mypr ; # crear un nuevo RP de esa twig.
  • restablece tu maestro a origin/master : git fetch y git reset --hard origin/master .