Cloné un repositorio git de cierto proyecto. ¿Puedo convertir los archivos al estado inicial y cuando reviso los archivos voy 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.
git
revision
revision-history
xralf
fuente
fuente
git log -n1
. Pero a menos quegit checkout
falle, es una pérdida de esfuerzo.git log
muestra solo el primer commit ahora, ¿puedo averiguar el sha1 del próximo commit?git log --oneline
y pegar la salida en un archivo de texto para referencia (se garantiza que las sumas abreviadas de sha1 que proporciona sean únicas). Otra opción, si su historial es lineal, es calcular cuántos commits hay desde el primer commit hasta elmaster
usogit checkout master~543
(si hay 543 commits), luegogit checkout master~542
, etc.Para ir a una versión / commit particular, ejecute los siguientes comandos. CÓDIGO HASH que puede obtener de
git log --oneline -n 10
Nota : después de restablecer una versión / confirmación en particular, puede ejecutar
git pull --rebase
, si desea recuperar todas las confirmaciones que se descartan.fuente
reset
no solo desprotege un punto en particular en el gráfico, sino que también moverá su rama actualmente desprotegidareset
, todos sus cambios pendientes se descartan.git pull --rebase
funciona solo si tiene un control remoto para su repositorio y está actualizado.Puede obtener una vista gráfica del historial del proyecto con herramientas como
gitk
. Solo corre:Si desea pagar una sucursal específica:
Para una confirmación específica, use el hash SHA1 en lugar del nombre de la rama. (Vea Treeishes en el Git Community Book , que es una buena lectura, para ver otras opciones para navegar por su árbol).
git log
también tiene un conjunto completo de opciones para mostrar el historial detallado o resumen.No conozco una manera fácil de avanzar en un historial de compromiso. Los proyectos con una historia lineal probablemente no sean tan comunes. La idea de una "revisión" como la que tendría con SVN o CVS no se correlaciona muy bien en Git.
fuente
Usando una clave SHA1 de confirmación, puede hacer lo siguiente:
Primero, encuentre la confirmación que desea para un archivo específico:
git log -n <# commits> <file-name>
Esto, basado en su
<# commits>
, generará una lista de confirmaciones para un archivo específico.CONSEJO: si no está seguro de qué comprometerse que busca, una forma buena de saberlo es mediante el comando siguiente:
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 un commit está formateada en la
git log -n
lista como:Segundo, verifique la versión deseada:
Si ha encontrado el commit / versión 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>
fuente
Estaba en una situación en la que tenemos una rama maestra, y luego otra rama llamada 17.0 y dentro de esta 17.0 había un hash de confirmación sin decir "XYZ" . Y el cliente recibe una compilación hasta esa revisión XYZ. Ahora nos encontramos con un error y eso debe resolverse para ese cliente. Por lo tanto, necesitamos crear una rama separada para ese cliente hasta ese hash "xyz". Así que así es como lo hice.
Primero creé una carpeta con ese nombre de cliente en mi máquina local. Digamos que el nombre del cliente es "AAA" una vez que se crea esa carpeta, siga el comando dentro de esta carpeta:
fuente
Una forma sería crear todos los commits realizados a parches. compruebe la confirmación inicial y luego aplique los parches en orden después de leer.
uso
git format-patch <initial revision>
y luegogit checkout <initial revision>
. Debería 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 haga lo
git apply <filename>
que debería parecergit apply 0001-*
y cuente.Pero realmente me pregunto por qué no querrías leer los parches en su lugar. Por favor, publique esto en sus comentarios porque tengo curiosidad.
el manual de git también me da esto:
También puede echar un vistazo a lo
git blame filename
que le da una lista donde cada línea está asociada con un hash commit + autor.fuente
Para llegar a un código comprometido específico, necesita el código hash de ese compromiso. Puede obtener ese código hash de dos maneras:
git log
y verifique sus confirmaciones recientes en esa rama. Le mostrará el código hash de su confirmación y el mensaje que dejó mientras confirmaba su código. Solo copia y luego hazgit checkout commit_hash_code
Después de pasar a ese código, si desea trabajar en él y realizar cambios, debe realizar otra bifurcación
git checkout -b <new-branch-name>
, de lo contrario, los cambios no se retendrán.fuente
Para verificar una confirmación (¡nb estás mirando el pasado!).
Para reiniciar brutalmente desde un commit y eliminar esas ramas posteriores que probablemente arruinó.
fuente