tag remove practices crear commits commands best git revision revision-history

remove - git tag commits



Ir a revisiĆ³n particular (7)

He creado una herramienta python de línea de comandos para ver cómo evolucionó un proyecto. Podrías ver si eso ayuda. La herramienta está alojada en el git en la siguiente url

https://github.com/yoganand/git-evolver

Cloné un repositorio git de un determinado proyecto. ¿Puedo pasar los archivos al estado inicial y cuando reviso los archivos, pasar a la revisión 2, 3, 4 ... más reciente? Me gustaría tener una visión general de cómo estaba evolucionando el proyecto.


Me gustaría mencionar la herramienta de línea de comandos tig, disponible aparentemente en todas partes. Es una vista de árbol gráfica de texto con visualización de etiqueta, etc. del historial de revisión del proyecto. Se puede utilizar sobre ssh, etc. Muy práctico.


Para ir a una versión particular / commit ejecute los siguientes comandos. CÓDIGO HASH que puede obtener de git log --oneline -n 10

git reset --hard HASH-CODE

Nota : después de restablecer a una versión / confirmación en particular, puede ejecutar git pull --rebase , si desea recuperar todas las confirmaciones que se descartan.


Puede obtener una vista gráfica del historial del proyecto con herramientas como gitk . Solo corre:

gitk --all

Si desea retirar una rama específica:

git checkout <branch name>

Para una confirmación específica, use el hash SHA1 en lugar del nombre de la rama. (Consulte Treeishes en el Libro de la Comunidad de Git , que es una buena lectura, para ver otras opciones para navegar por su árbol).

git log tiene un conjunto completo de opciones para mostrar el historial detallado o resumido también.

No conozco una manera fácil de avanzar en un historial de confirmación. Los proyectos con una historia lineal probablemente no son tan comunes. La idea de una "revisión" como la que tendrías con SVN o CVS no se correlaciona tan bien en Git.


Una forma sería crear todas las confirmaciones hechas a los parches. verifique el compromiso inicial y luego aplique los parches en orden después de leerlos.

use git format-patch <initial revision> y luego git checkout <initial revision> . debe obtener una pila de archivos en su director comenzando con cuatro dígitos que son los parches.

cuando haya terminado de leer su revisión, simplemente git apply <filename> que debería verse como git apply 0001-* y cuente.

Pero realmente me pregunto por qué no querrías leer los parches. Por favor, publique esto en sus comentarios porque tengo curiosidad.

El manual de Git también me da esto:

git show next~10:Documentation/README

Muestra el contenido del archivo Documentation / README tal como estaba actualizado en la décima última confirmación de la rama siguiente.

También puede echar un vistazo a git blame filename que le proporciona una lista donde cada línea está asociada con un hash de cometer + autor.


Usando una clave SHA1 de confirmación, podría hacer lo siguiente:

  • Primero, encuentre la confirmación que desea para un archivo específico:

    git log -n <# commits> <file-name>

    Esto, basado en sus <# commits> , generará una lista de confirmaciones para un archivo específico.

    CONSEJO: si no está seguro de qué compromiso está buscando, una buena manera de averiguarlo es mediante el siguiente comando: git diff <commit-SHA1>..HEAD <file-name> . Este comando mostrará la diferencia entre la versión actual de una confirmación y una versión anterior de una confirmación para un archivo específico.

    NOTA: la clave SHA1 de una confirmación está formateada en la lista de git log -n como:

commit <SHA1 id>

  • En segundo lugar, compruebe la versión deseada:

    Si ha encontrado la confirmación / versión deseada que desea, simplemente use el comando: git checkout <desired-SHA1> <file-name>

    Esto colocará la versión del archivo que especificó en el área de preparación. Para sacarlo del área de preparación simplemente use el comando: reset HEAD <file-name>

Para volver a donde apunta el repositorio remoto, simplemente use el comando: git checkout HEAD <file-name>


Use git checkout <sha1> para verificar un compromiso en particular.