[Bug] Repetitive response sections in documentation parece solo de visualizacion si cierras y abres desaparece pero es continuo y muy molesto
Bug Description
repeticion de tramos de respuesta es continuo Las dos formas de juntarlo, y qué hace cada una
Opción 1 — merge: unir, sin tocar lo existente
Estando en tu rama:
git switch mia_candidata
git merge origin/suya_estable
Resultado:
M ← mia_candidata (commit nuevo, DOS padres)
/ \
C S2 ← origin/suya_estable (intacta)
| |
B S1
| |
+- A -+
Qué pasa exactamente:
- Git crea un commit nuevo M con dos padres. Es el único caso en que un commit tiene dos padres, y es lo que hace que la bifurcación quede registrada para siempre en la historia.
- Ningún commit existente se modifica. B, C, S1, S2 conservan sus hashes. Nada de lo que ya está publicado cambia.
- Solo se mueve la etiqueta de la rama en la que estás. origin/suya_estable no se entera de nada. merge nunca modifica la rama que le pasas como argumento — un malentendido habitual.
- Si hay conflictos, los resuelves una sola vez, todos juntos, y el resultado queda dentro de M.
Opción 2 — rebase: reescribir mis commits encima de los suyos
git switch mia_candidata
git rebase origin/suya_estable
Resultado:
C' ← mia_candidata
|
B' (B' y C' son commits NUEVOS)
|
S2 ← origin/suya_estable
|
S1
|
A
Qué pasa exactamente, paso a paso, porque aquí está tu duda de "funcionamiento":
- Git calcula la lista de tus commits que no están en la otra rama: B, C.
- Para cada uno calcula su parche (el diff contra su padre). Recuerda el punto 2 de arriba: el commit guarda un snapshot, el parche se deriva.
- Mueve el punto de trabajo a S2 (el commit final del compañero).
- Aplica el parche de B ahí → nace B'. Mismo mensaje, mismo autor, misma fecha de autoría… hash distinto, porque su padre ya no es A sino S2. Y su contenido tampoco es idéntico a B: es
"lo del compañero + tu cambio".
- Aplica el parche de C sobre B' → nace C'.
- Mueve la etiqueta mia_candidata a C'.
Y ahora lo importante: B y C siguen existiendo en tu repositorio, pero ya no hay ninguna etiqueta apuntándolos. Quedan localizables durante semanas vía git reflog (el diario de por dónde
ha pasado tu HEAD), y luego el recolector de basura los borra. Esto es tu red de rescate si algo sale mal, pero no es un sitio donde dejar trabajo a propósito.
Opción 1 — merge: unir, sin tocar lo existente
Estando en tu rama:
git switch mia_candidata
git merge origin/suya_estable
Resultado:
M ← mia_candidata (commit nuevo, DOS padres)
/ \
C S2 ← origin/suya_estable (intacta)
| |
B S1
| |
+- A -+
Qué pasa exactamente:
Environment Info
- Platform: linux
- Terminal: vscode
- Version: 2.1.220
- Feedback ID: d6ac51f6-9a0a-4089-a24a-702299e1cbde
Errors
[]