Necesito hacer un git revert -m, pero no he podido encontrar ninguna documentación sobre cómo están numerados los padres de cometer. Todo lo que he visto (incluidas las páginas de ayuda para rev-parse) me dice que los padres están contados pero no dicen cómo están numerados. ¿Podría alguien señalarme dónde se define esto y cómo determinarlo?¿Cómo averiguo la numeración de padres de commit de fusión?
Respuesta
git show --format="%P" <SHA>
le dará los SHA principales de la confirmación dada en orden numérico. La mayoría de las veces, la que desea especificar para git revert
será 1
.
En el caso de la mayoría de las fusiones, el SHA de la rama que fue desprotegido será el primer padre, y el SHA de la sucursal que se fusionó será el segundo. (Básicamente, la rama desprotegida es siempre la primera matriz, los otros padres son las ramas que se especificaron en el comando de fusión en el orden de su especificación).
Si desea encontrar el SHA para un padre en particular, utilizar el operador de intercalación:
- primer padre:
git rev-parse <SHA>^1
- segundo padre:
git rev-parse <SHA>^2
etcétera.
El 'número' de compromiso es, de hecho, su valor hash SHA1. Esto le da una gran integridad para fines de verificación.
También tiene el agradable efecto secundario de que usted no puede/espera que sea de ninguna manera secuencial, que también es una propiedad natural de la rama & fusionar sistemas VCS distribuidos para múltiples usuarios. Hay muchos comandos para caminar en el árbol y métodos para hacer referencia a confirmaciones, como HEAD^o HEAD ^^.
git help revisons
ofrece una descripción completa de todas las sintaxis diferentes.
La pregunta es sobre la numeración de los padres, no las identificaciones de los commits. es decir, "Primero padre", "Segundo padre" ("HEAD^1" vs. "HEAD^2") – ABMagil
@ABMagil. La pregunta original no decía explícitamente que se trataba de contar dentro de la sintaxis de estilo HEAD ^^ ~~, simplemente hablaba sobre la numeración de compromiso, que canónicamente es el sha1. Terminé diciendo que el estilo HEAD^estaba disponible; no pude resaltar 'git help repaons' como fuente. –
Al hacer que git log o git se muestren en la fusión, commit le mostrará la lista de padres para la fusión en el encabezado "Merge:". Esto enumera los padres de la fusión en orden secuencial de izquierda a derecha. La primera es la primera matriz, la segunda es la segunda matriz, etc.
Por ejemplo en el repositorio git:
$ git show 0af53e188a3a8915f65c3b3edaeed3e07d8d3802
commit 0af53e188a3a8915f65c3b3edaeed3e07d8d3802
Merge: b81b758 8894d53
Author: Junio C Hamano <[email protected]>
Date: Thu Aug 11 11:04:28 2011 -0700
Merge branch 'cb/partial-commit-relative-pathspec'
* cb/partial-commit-relative-pathspec:
commit: allow partial commits with relative paths
b81b758 es la primera matriz, y 8894d53 es la segunda matriz para la merge commit 0af53e1.
Las confirmaciones de padres se numeran según su orden de aparición en la línea de comandos cuando la confirmación se realiza:
[on branch master]
$ git merge foo bar baz
que se fusionarán las ramas foo, bar y baz en maestro y crear una nueva combinación de cometer si el avance rápido no fue posible.
En la combinación de fusión resultante, "maestro" será el primer padre, "foo" 2º, "barra" 3º y "baz" 4º.
- 1. Obtener los padres de un compromiso de fusión en git
- 2. Git Commit después de la fusión abre VIM
- 3. ¿Cómo averiguo la versión actual de Solr?
- 4. Numeración de segmentos de la variable
- 5. IOS Versión de la aplicación de numeración
- 6. Conceptos básicos de numeración de la versión?
- 7. Numeración de dimensiones arbitrarias
- 8. Numeración de la semana ISO-8601 frente a la numeración de "Outlook" en PHP
- 9. numeración de esquema C#
- 10. ¿Cómo hacer una confirmación automática después de la fusión exitosa?
- 11. ¿Recibe padres de la clase?
- 12. Numeración de filas en PostgreSQL
- 13. Rebase a merge commit
- 14. Podar compromisos de fusión vacía de la historia en el repositorio de Git
- 15. git - cómo excluir archivos de la fusión
- 16. ¿Cómo habilitar la numeración de líneas en SynEdit?
- 17. Cómo utilizar la numeración de líneas relativa universalmente en Vim
- 18. Numeración de teoremas en LaTeX
- 19. HTML/CSS Contorno de numeración
- 20. ¿Qué reglas sigue la numeración de la versión del software?
- 21. ¿Por qué Git creó un commit de fusión sin cambios en el archivo?
- 22. Cómo encontrar el compromiso de fusión anterior
- 23. Gerrit siempre rebase antes de enviar parche para evitar una fusión commit
- 24. ¿Qué esquema de numeración de versión usar?
- 25. Viñetas y numeración dentro de informes
- 26. ¿Reasignación después de la fusión de squash?
- 27. Cómo ignorar la carpeta durante la fusión de subversión
- 28. commit-pull-merge-push o pull-merge-commit-push?
- 29. revirtiendo push'd git commit
- 30. invocando padres inicializador de la clase
Buena respuesta, pero el peligro radica en "la mayoría", no en todos. Tengo un git repo que se convirtió de svn y varias operaciones 'git-filter-branch' se han ejecutado en él, y ahora parece que en algunos casos el orden es al revés. Ver http: // stackoverflow.com/questions/27704438/find-the-right-parent-of-a-merge-commit-in-a-non-interactive-way –