Otro problema más de "cómo volver a basar un repository de Git en otro"

Tengo un problema similar al de esta pregunta , pero con una diferencia fundamental:

Obtuvimos el código de un cliente para su evaluación y comenzamos a trabajar antes de firmar contratos. Nos dieron código puro, no git repo. Creamos un repository git y lo usamos por un time.

Cuando el proyecto obtuvo el visto bueno, obtuvimos acceso a su repository git para ese proyecto. Ese código también ha evolucionado. Se supone que debo crear una nueva sucursal en su repository y rebase nuestro trabajo en esa nueva sucursal.

Leyendo la pregunta anterior, supe sobre el injerto , donde un repository B puede tener un repository padre A usando graft para decir que la base de B es un compromiso de A. Pero en mi caso, no sé qué compromiso de A (su repository) es la base de B (mi repository).

Es una situación muy extraña, donde dos repos se pueden considerar diferentes, ya que no conozco el compromiso que podría ser el padre del segundo, pero los cambios en el segundo deberían volver a basarse en los files en el primero.

Interpretando su pregunta como "encuentre la (s) revisión (es) en su repository con el tree de la fuente que le enviaron",

ours=$( git rev-parse our_commit_of_their_source^{tree} )
git rev-list --pretty=format:'%h %T %s' | grep $ours

Si no hay treees idénticos, puede al less enumerar eficientemente los files con diferencias con git diff-tree --name-status $ours $theirs para ver cuántos files en un commit son diferentes a los suyos, es una forma de haz lo que Robin sugirió. Tal vez los treees diff con '-b` ignoren los cambios solo en el espacio en blanco.

Puede hacer una búsqueda sobre todas las revisiones en un range de dates razonable, para encontrar la revisión coincidente en su repository. Por supuesto, tendrá que ignorar los files en .gitignore .

Pero una primera conjetura razonable es que la revisión será el mismo día que le enviaron el código … por lo que solo debería verificar algunas revisiones.

Puede usar git diff HEAD para verificar las diferencias.