Deshacer una inserción de GIT en el repository compartido incorrecto

Uno de nuestros desarrolladores accidentalmente empujó su repository local al repository compartido incorrecto.

He logrado restablecer el encabezado a la location correcta usando git push y force, entonces esa parte está bien ahora.

Sin embargo, no he podido deshacerme de la confirmación incorrecta, aparece en gitk, como una confirmación que no tiene padres ni hijos (es decir, no está conectada a ninguna twig).

¿Hay alguna manera de deshacerse por completo de este (congelamos el repository compartido para que nadie lo haya hecho desde el último empujón)?

La confirmación errornous está todavía en el repository git, pero no se refiere a ninguna otra confirmación (o twig) si lo entiendo correctamente.

git gc eliminará este compromiso como ya sabe por respuestas anteriores, sin embargo, no eliminará los objects que son más nuevos que 2 semanas. (Para evitar que pierda datos).

Si está realmente seguro de lo que está haciendo (tiene copys de security, etc.) puede hacer git gc --prune=<date> . La ayuda para git gc declara:

"Pode objects sueltos más antiguos que la date (el valor pnetworkingeterminado es hace 2 semanas, reemplazable por la variable de configuration gc.pruneExpire). Esta opción está activada por defecto".

Puede ejecutar git gc en el repository remoto. Si no se puede llegar a la confirmación desde ninguna reference, debe eliminarse del repository. Asegúrese de hacer una copy de security antes.

Es un estado extraño, hice tales correcciones muchas veces y nunca vi esos compromisos separados. ¿Ejecutas gitk en el repository de forma local, o algún clon?

Pulsé alguna confirmación vacía / irrelevante y volví a mirar, posiblemente el problema desaparezca. Si no, correría git fsck .

Además, si clonas el repository central, ¿ves el exceso de compromiso en el clon?