Para ver cómo difiere un archivo rastreado de una versión anterior en un repositorio Git en su Mac, abra Terminal, vaya al repositorio y ejecute git diff REVISION -- path/to/file. Reemplace REVISION por una confirmación como HEAD~1 y la ruta por la ruta relativa al repositorio del archivo. Esto compara esa versión confirmada con el archivo tal como existe ahora en su árbol de trabajo; no modifica el archivo.
Abrir Terminal en el repositorio
En el Finder, localice la carpeta del repositorio. Abra Terminal, escriba cd seguido de un espacio, arrastre la carpeta del repositorio a la ventana de Terminal y luego presione Return. Apple documenta el arrastre de elementos a Terminal como una forma de especificar rutas de archivos y carpetas. Compruebe que se encuentra en un árbol de trabajo de Git con:
git status
Si Git informa que el directorio actual no es un repositorio, cámbiese a la carpeta de nivel superior del repositorio y vuelva a intentarlo. Terminal utiliza zsh de forma predeterminada en macOS, según Apple. Los comandos siguientes funcionan en ese shell; utilizan rutas entre comillas para que se conserven los espacios en los nombres.
Comparar el archivo actual con una revisión anterior
Utilice esta estructura:
git diff REVISION -- "path/to/file"
Por ejemplo, para comparar el archivo Sources/Menu.swift actual con su versión una confirmación anterior (primer padre) respecto al HEAD actual, ejecute:
git diff 'HEAD~1' -- "Sources/Menu.swift"
El -- marca el final de los argumentos de revisión y opciones y el inicio de la ruta. Git documenta esta forma como la comparación del árbol de trabajo con la confirmación indicada. En la salida, las líneas que comienzan con - corresponden a la versión anterior, las líneas con + provienen del archivo actual, y las líneas circundantes sin marcas proporcionan contexto. Documentación de Git diff
HEAD~1 significa el primer padre de la confirmación actual; HEAD~2 sigue dos pasos de primer padre. Esto resulta práctico para el historial reciente, pero puede que no identifique el cambio exacto que tiene en mente, especialmente en torno a fusiones (merges). La sintaxis de revisión de Git también acepta nombres de ramas, etiquetas (tags) e identificadores de confirmación (commit IDs). Utilice una confirmación que haya identificado cuando necesite un punto histórico específico. Sintaxis de revisión de Git
Para encontrar una confirmación que haya modificado el archivo, inspeccione su historial:
git log --oneline -- "Sources/Menu.swift"
Copie el ID de confirmación relevante de la salida y luego utilícelo en el comando diff:
git diff 4f2a9c1 -- "Sources/Menu.swift"
Reemplace 4f2a9c1 por el ID real que se muestra en su repositorio. Git acepta un ID de confirmación abreviado sin ambigüedades; si es ambiguo o no es válido, utilice un ID más largo u otro nombre de revisión.
Elija la comparación que responda a su consulta
Una comparación con el árbol de trabajo incluye cualquier edición actual del archivo, ya sea que esté preparada (staged) o no (unstaged). Si, en cambio, desea comparar dos versiones confirmadas, proporcione ambas revisiones:
git diff OLD_REV NEW_REV -- "Sources/Menu.swift"
Por ejemplo, git diff 'HEAD~3' HEAD -- "Sources/Menu.swift" compara el archivo confirmado tres pasos de primer padre atrás con la versión de la confirmación actual. Esto no incluye ediciones sin confirmar. Git describe la variante de dos confirmaciones como la comparación de dos confirmaciones arbitrarias. Documentación de Git diff
Si desea comparar contra la versión preparada para la siguiente confirmación, la variante --cached de Git compara el índice con una confirmación. Por ejemplo:
git diff --cached HEAD -- "Sources/Menu.swift"
Eso responde a una pregunta diferente a la de comparar el archivo de trabajo actual: muestra los cambios preparados relativos a HEAD.
Interpretar salidas vacías y errores comunes
La ausencia de salida de diff generalmente significa que Git no detecta diferencias para esa ruta entre la revisión elegida y el estado actual seleccionado. Confirme la ortografía y el uso de mayúsculas y minúsculas en la ruta, y asegúrese de estar dentro del repositorio correcto. Si Git indica que la ruta es desconocida en esa revisión, es posible que ese archivo aún no existiera o que la ruta haya cambiado. Para inspeccionar un archivo renombrado o eliminado, utilice su ruta histórica y consulte la lista de archivos o el registro (log) de la confirmación correspondiente.
Un archivo que Git nunca ha rastreado no tiene ninguna versión confirmada con la cual compararse. Asimismo, el diff de texto ordinario de Git puede no ofrecer una comparación línea por línea legible para archivos binarios. El comando muestra cambios; no restaura la versión antigua. Evite git checkout o git restore cuando su único objetivo sea inspeccionar, ya que esos comandos tienen efectos diferentes en los archivos.
Para una revisión más acotada, agregue un conteo de contexto reducido, como git diff -U1 'HEAD~1' -- "Sources/Menu.swift". La opción -U de Git controla cuántas líneas de contexto circundante se muestran. Una vez que tenga la revisión y la ruta deseadas, este comando proporciona una vista directa y reproducible de lo que difiere, dejando su archivo intacto.
Fuentes
Cambiar el shell predeterminado en Terminal en la Mac — Soporte técnico de Apple
Arrastrar ítems a una ventana de Terminal — Soporte técnico de Apple