Los files desaparecieron del repository, pero no hay eliminación en el historial de confirmaciones

Tengo un rompecabezas en mis manos: varios files previamente comprometidos desaparecieron durante la noche, pero no hay una sola confirmación que demuestre que fueron eliminados. ¿Cómo pudo suceder eso?

La situación es la siguiente:

  • Tengo un repository privado de Git en BitBucket, con una única twig.
  • Hay otras 3 personas en mi equipo, y todos usan SourceTree como interfaz git.
  • Ayer apreté un compromiso, y después de eso el repository estaba bien.
  • Desde entonces, los otros 3 miembros del equipo presionaron varias veces:
    • uno era una fusión local,
    • dos eran ediciones README.md línea (es decir, a través de una página web),
    • uno fue la eliminación en línea (es decir, a través de una página web) de un solo file no relacionado,
    • y los otros fueron varios commits con 1 o 2 files.
  • Por la mañana, saqué el repository, solo para encontrar varios files diferentes, que fueron cometidos por diferentes personas en diferentes momentos, se habían ido del repository:
    • se han ido de la copy local,
    • se han ido de la página Fuente en el website BitBucket del proyecto,
    • se han ido del .zip descargado de la página de Descargas .
  • Sin embargo:
    • ninguno de los commits después de los míos borra ninguno de estos files,
    • Puedo ir a una confirmación anterior que modificó uno de los files "desaparecidos", ir a su página de resumen, ver su historial, y ninguno de los commits en él también borra el file.
  • Comprobé dos .gitignore que nadie se .gitignore con .gitignore , pero estaba intacto desde diciembre pasado.

Además, para confundir aún más el problema: hace varios meses agregué los files AR y test-AR en una única confirmación. Más tarde test.AR el nombre de la test-AR a test.AR Ahora AR todavía está en el repository, pero ni test-AR ni test.AR todavía están allí.

Entonces, ¿qué podría causar que los files se eliminen del repository de Git sin que ninguno de los commits los elimine realmente?


PD. Por supuesto, presenté un ticket de soporte para el Soporte BitBucket, pero no estoy muy seguro de que respondan rápidamente.

Es probable que alguien forzó un empuje (es decir, git push -f ... ) lo que significa que cualquier cosa que esté en su historia local reemplaza a la twig en el control remoto. No es necesario que haya una confirmación que borre las cosas, como parece suponer. Si un desarrollador nunca ha sincronizado sus cambios para ver todas las confirmaciones en el server y luego forzar su historial desactualizado, puede perder las confirmaciones. Todo esto supone que por repository "privado" quiere decir que los desarrolladores de su pequeño grupo pueden escribir en el repository.

Me gustaría ajustar los permissions de repositorys, sucursales o proyectos para que esto no vuelva a ocurrir. O bien, puede solicitar que todos los usuarios usen requestes de extracción si está de acuerdo con pasar a un enfoque de gitflow o de flujo de funciones. También asegúrese de que sus desarrolladores estén informados sobre cómo usar Git.

Es solo una suposition aquí, pero probablemente si todos hicieran cambios pero varias personas perdieran sus compromisos, entonces supongo que quien no perdió ningún compromiso es la persona culpable.