Dado un nombre de rama local / remota, ¿cómo podría obtener el hash de la confirmación a la que apunta esta rama?
88
El comando git rev-parse
es tu amigo, por ejemplo:
$ git rev-parse development
17f2303133734f4b9a9aacfe52209e04ec11aff4
... o para una sucursal de seguimiento remoto:
$ git rev-parse origin/master
da1ec1472c108f52d4256049fe1f674af69e785d
Este comando es generalmente muy útil, ya que puede analizar cualquiera de las formas de especificar nombres de sucursales git
, como:
git rev-parse master~3
git rev-parse HEAD@{2.days.ago}
... etc.
foo
, puedes hacer:git log --pretty=format:'%H'
def BranchHash = sh "git rev-parse ${BRANCH-NAME}
Estoy recibiendo:fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
. ¿qué está mal?Los hashes se almacenan en
.git/refs/
, p. Ej..git/refs/heads/master
Pero utilícelo programáticamente
git rev-parse
como lo sugiere Mark Longair, ya que es más seguro.fuente
No olvide que desde Git 2.19 (Q2 2018), Git prepara una transición de hashes SHA1 a SHA2: consulte " ¿Por qué Git no usa SHA más moderno? "
Con Git 2.25 (Q1 2020),
git rev-parse
evoluciona y refleja ese posible nuevo hash.Ver cometer fa26d5e , comprometerse cf02be8 , comprometerse 38ee26b , comprometerse 37ab8eb , comprometerse 0370b35 , comprometerse 0253e12 , comprometerse 45e2ef2 , comprometerse 79b0edc , comprometerse 840624f , comprometerse 32a6707 , comprometerse 440bf91 , comprometerse 0b408ca , comprometerse 2eabd38 (28 de octubre 2019), y comprometerse 1bcef51 , cometen ecde49b (05 de octubre de 2019) por brian m. carlson (
bk2204
) .(Combinado por Junio C Hamano -
gitster
- en el compromiso 28014c1, 10 de noviembre de 2019)La
git rev-parse
documentación ahora incluye:Con Git 2.29 (Q4 2020), puede asegurarse de qué formato debe usar para leer la confirmación de hash de una rama (o cualquier otro objeto).
Ver cometer e023ff0 , comprometerse 4feb562 , comprometerse 8a06d56 , comprometerse c49fe07 , comprometerse 02a32db , comprometerse ceaa4b3 , comprometerse eff45da , comprometerse b5b46d7 , comprometerse c5aecfc , comprometerse e74b606 , comprometerse 439d3a1 , comprometerse 6c2adf8 , comprometerse de5737c , comprometerse e0a646e , comprometerse 6ff6a67 , comprometerse 831279d , cometen b6e5005 , confirma 287bb3a , confirma 22f1824 , confirma db00af9 ,cometer 7187eb1 , cometer 98de0b2 , cometer a5587b8 , cometer 66b6d43 , cometer 2197f87 , cometer c0b65ea , cometer d62607d , cometer d482c23 , cometer 866be6e , cometer 4bacb6d , cometer 252a4ee , cometer 368f3cb , cometer abe3db1 , cometer 08fbc5d , cometer 11b6961 , cometer 9e3bd8a , cometer d827bce , comete 094a685 (29 de julio de 2020) por brian m. carlson (
bk2204
) .Vercommit 800e6a7 (29 de julio de 2020) por Johannes Schindelin (
dscho
) .(Combinado por Junio C Hamano -
gitster
- en el compromiso e0ad957 , 11 de agosto de 2020)git config
ahora incluye en su página de manual :Para ser claros, con Git 2.29 (Q4 2020), la reciente adición de soporte SHA-256 está marcada como experimental en la documentación.
Consulte la confirmación ff233d8 (16 de agosto de 2020) de Martin Ågren (
none
) .(Combinado por Junio C Hamano -
gitster
- en el compromiso d1ff741 , 24 de agosto de 2020)git
ahora incluye en su página de manual :object-format-disclaimer
ahora incluye en su página de manual :El mismo Git 2.29 (Q4 2020) asegura que "
git clone
" ( man ) funcionará cuando se clone desde el repositorio SHA-1, mientras que yaGIT_DEFAULT_HASH
está configurado para usar SHA-256.Antes de la 2.29, eso resultó en un repositorio inutilizable que afirma ser un repositorio SHA-256 con objetos SHA-1 y referencias.
Esto ha sido corregido.
Consulta el compromiso 47ac970 (20 de septiembre de 2020) de brian m. carlson (
bk2204
) .(Combinado por Junio C Hamano -
gitster
- en el compromiso b28919c , 29 de septiembre de 2020)fuente