La guía o código que verás en este post es la solución más sencilla y válida que encontramos a esta duda o dilema.
Solución:
Para comparar un directorio de trabajo local con una sucursal remota, por ejemplo origen/maestro:
git fetch origin master
Esto le dice a git que obtenga la rama llamada ‘maestro’ del control remoto llamado ‘origen’.
git fetch
será no afectar los archivos en su directorio de trabajo; no intenta fusionar cambios comogit pull
hace.git diff --summary FETCH_HEAD
Cuando se recupera la rama remota, se puede hacer referencia localmente a través de FETCH_HEAD. El comando anterior le dice a git que compare los archivos del directorio de trabajo con el HEAD de la rama FETCHed e informe los resultados en formato de resumen. El formato de resumen brinda una descripción general de los cambios, generalmente una buena forma de comenzar. Si quieres un poco más de información, usa
--stat
en vez de--summary
.git diff FETCH_HEAD -- mydir/myfile.js
Si desea ver los cambios en un archivo específico, por ejemplo myfile.js, omita el
--summary
y haga referencia al archivo que desea (o árbol).
Como se ha señalado, origin
hace referencia al repositorio remoto y master
hace referencia a la rama dentro de ese repositorio. Por defecto, git usa el nombre origin
para un control remoto, así que si lo hace git clone
por defecto llamará a ese control remoto origin
. Usar git remote -v
Ver qué origin
puntos a.
Es posible que tenga más de un control remoto. Por ejemplo, si “bifurca” un proyecto en GitHub, normalmente necesita un control remoto que haga referencia al proyecto original, así como a su propia bifurcación. Di que creas https://github.com/yourusername/someproject
como un tenedor de https://github.com/theoriginal/someproject
. Por convención, nombraría el control remoto al repositorio original upstream
mientras que tu propio tenedor sería origin
. Si realiza cambios en su bifurcación en GitHub y desea obtener esos cambios localmente, usaría git fetch origin master
. Si el upstream
ha realizado cambios que necesita sincronizar localmente antes de realizar más cambios, usaría git fetch upstream master
.
no hagas un pull
:
- hacer un
fetch
(la sintaxis es la misma quegit pull
pero no se fusiona automáticamente) - hacer un
diff
entre su sucursal de destino y la otra sucursal - entonces haz un
merge
si tu quieres
Según el comentario del OP de que parte de su “problema era Windows vs. Unix LFs”, esto debería ayudar:
Puede usar el siguiente comando de configuración para decirle a git-diff que ignore la diferencia del código eol.
git config --global core.whitespace cr-at-eol
Te mostramos las reseñas y valoraciones de los lectores
Recuerda que puedes añadir una puntuación verdadera .