¿Cómo podemos obtener la diferencia entre dos repositorios git?
El escenario: tenemos un repo_a y repo_b. Este último fue creado como una copia de repo_a. Ha habido un desarrollo paralelo en ambos repositorios después. ¿Hay alguna manera de enumerar las diferencias de las versiones actuales de estos dos repositorios?
Respuestas:
En repo_a:
fuente
origin/master
lugar de un simplemaster
. Además, esto encuentra la diferencia entre las ramas maestras, entonces, ¿qué pasa si desea encontrar todas las ramas que son diferentes? Por ejemplo, para verificar el estado de una copia de seguridad del repositorio?Meld puede comparar directorios:
Simplemente use los directorios de los dos repositorios git y obtendrá una buena comparación gráfica:
Cuando hace clic en uno de los elementos azules, puede ver qué cambió.
fuente
Puede agregar otro repositorio primero como control remoto a su repositorio actual:
luego busque brach desde ese control remoto:
esto crea esa rama como una nueva rama en su repositorio actual, luego puede diferenciar esa rama con cualquiera de sus ramas, por ejemplo, para comparar la rama actual con la nueva rama (nombre_sucursal):
fuente
Una vez que tenga ambas ramas en un repositorio, puede hacer una
git diff
. Y ponerlos en un repositorio es tan fácil comofuente
Eso es incorrecto
remotes/b
es un control remoto, pero no una rama.Para que funcione, tuve que hacer:
fuente
Consulte http://git.or.cz/gitwiki/GitTips , sección "Cómo comparar dos repositorios locales" en "General".
En resumen, está utilizando la variable de entorno GIT_ALTERNATE_OBJECT_DIRECTORIES para tener acceso a la base de datos de objetos del otro repositorio, y está usando git rev-parse con
--git-dir
/ GIT_DIR para convertir el nombre simbólico en otro repositorio al identificador SHA-1.La versión moderna se vería así (suponiendo que se encuentre en 'repo_a'):
donde
../repo_b/.git
está la ruta de acceso a la base de datos de objetos en repo_b (sería repo_b.git si fuera un repositorio simple). Por supuesto, puede comparar versiones arbitrarias, no solo HEADs.Tenga en cuenta que si repo_a y repo_b son el mismo repositorio, podría tener más sentido colocarlos en el mismo repositorio, ya sea usando "
git remote add -f ...
" para crear apodos para el repositorio para actualizaciones repetidas, u obedeciendo "git fetch ...
"; como se describe en otras respuestas.fuente
Yo uso PyCharm que tiene grandes capacidades para comparar entre carpetas y archivos.
Simplemente abra la carpeta principal para ambos repositorios y espere hasta que indexe. Luego, puede hacer clic derecho en una carpeta o archivo
Compare to...
y seleccionar la carpeta / archivo correspondiente en el otro lado.Muestra no solo qué archivos son diferentes sino también su contenido. Mucho más fácil que la línea de comando.
fuente
Su mejor opción es tener ambos repositorios en su máquina local y usar el comando linux diff con los dos directorios como parámetros:
diff -r repo-A repo-B
fuente
Una manera fácil de hacerlo sin tocar la configuración de sus controles remotos. Desde el repositorio A, en maestro (suponga que desea comparar ramas maestras):
fuente
Puedes usar el siguiente comando:
o para el lado a lado puedes usar:
En caso de colorear todos los archivos diff, puede usar:
fuente
Recordatorio para auto ... buscar primero, de lo contrario el repositorio no tiene hash local (supongo).
paso 1. Configura el control remoto ascendente y superior ^
diferenciar un solo archivo sigue este patrón:
git diff localBranch uptreamBranch --spacepath / singlefile
git diff master upstream/nameofrepo -- src/index.js
fuente