tag repositorio ramas que log crear conflictos comparar git version-control

ramas - que es un repositorio git



¿Cómo comparo dos repositorios git? (6)

¿Por qué no solo catar el registro de git de cada repositorio a su propio archivo y comparar? La diferencia más cercana a la parte inferior del archivo es donde comenzaron a divergir ...

Tengo dos exportaciones diferentes de nuestro repositorio de CVS en git. Divergen en algún momento, y estoy investigando un poco por qué. La línea de desarrollo se remonta a varios años y más de decenas de miles de compromisos.

Al comienzo de la línea de desarrollo, los ID de SHA1 para cada confirmación son idénticos, y me dicen que git-cvsimport es muy coherente con lo que está haciendo cuando lee los resultados de cvsps e importaciones.

Pero en algún momento entre la primera confirmación y la de ayer, las ID de SHA1 comienzan a divergir. Me gustaría saber dónde está esto comparando una lista de ID de confirmación de cada repositorio y buscando lo que falta. ¿Existen buenas herramientas o técnicas para hacer esto?


Dado que los dos repositorios de git comienzan de la misma manera, puede colocar ambos en el mismo repositorio de trabajo.

$ git remote add cvsimport-a git://.../cvsimport-a.git $ git remote add cvsimport-b git://.../cvsimport-b.git $ git remote update $ git log cvsimport-a/master..cvsimport-b/master # in B, not in A? $ git log cvsimport-b/master..cvsimport-a/master # in A, not in B?


En uno de tus repos, haz lo siguiente:

$ git remote add other-repo git://.../other-repo.git $ git remote update $ git log other-repo/master...master # or maybe: $ gitk master... other-repo/master

Esto te da la diferencia simétrica entre dos reposiciones; Esto te muestra todos los compromisos que están en un repositorio, pero no el otro.


La forma obvia sería clonar un repositorio, obtener la punta de la rama principal del otro repositorio en el clon y usar git merge-base en las dos puntas para encontrar el antepasado común.


Puede colocar (buscar) ambos repositorios en un repositorio único, ya sea uno nuevo o uno existente, como en las respuestas de efímero , Charles Bailey y Brian Campbell . O puede usar el truco de la página de Consejos y Trucos en Git Wiki, o para ser más exacto con la pregunta "Cómo comparar dos repositorios locales" allí.

Pero podría ser más sencillo generar la lista de SHA-1 de confirmaciones en orden topológico usando "git rev-list" (o "git-log" con las opciones apropiadas), y verificar que las primeras revisiones difieran.


Tuve una necesidad similar recientemente. Tenía un proyecto remoto clonado que necesitaba para comparar con una base de código copiada actual. Los registros de git no eran relevantes, porque los compromisos no tenían nada en común, y no estaba seguro de que se bifurcaran desde el mismo código base.

Para resolver el problema, utilicé git de manera bruta. Copié los archivos para verificarlos en el repositorio de git, luego verifiqué el git status busca de una lista de archivos modificados.

Además, git diff <filename> también se puede utilizar para inspeccionar más. Pude comparar archivos dentro