Tengo configurado un gancho posterior a la fusión para integrarlo (semimanualmente) con otro sistema de control de versiones. Sin embargo, a veces me gustaría evitar que el gancho se ejecute. ¿Hay alguna forma de evitarlo? git merge
?
sabia que hay --no-verify
parámetro de línea de comando para git commit
. Ese tipo de solución sería perfecta para mi caso de uso, pero parece --no-verify
no esta trabajando para git commit
dominio.
dios bendigafresa
para los que vinieron aquí porque git merge --no-verify --continue
no funciona en conjunto: puede deshabilitar los ganchos temporalmente para la fusión; por ejemplo, para mi proyecto de reacción actual, acabo de eliminar esta parte de mi package.json
– como archivo no preparado, no entrará en la confirmación de fusión
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{js,ts,tsx}": [
"eslint --fix --rule '@typescript-eslint/no-non-null-assertion: error'",
"prettier --write"
],
"*.css": [
"stylelint --fix",
"prettier --write"
],
"*.{json,yml,md,eslintrc,stylelintrc,babelrc}": [
"prettier --write"
]
},
-
si alguien está usando
pre-commit
tuve que habilitar ganchos inocuos, de lo contrario, la confirmación previa se quejó de un no válido y la fusión fallaría.– Mattwmaster58
2 de mayo a las 13:30
Puede deshabilitar temporalmente los git hooks haciendo lo siguiente:
$ git config core.hooksPath # to see the current value
$ git config core.hooksPath '/dev/null'
$ git merge --continue
$ git config core.hooksPath '/value/you/had/before'
Adaptado de esta útil respuesta.
-
¡Gracias! Después de la
merge --continue
tuve ese usogit config --unset core.hooksPath
porque mihooksPath
primero no devolvió nada. Podrías agregar esto a tu respuesta.– Ramón Días
6 ago 2022 a las 20:44
No hay una bandera para deshabilitar la ejecución de un enlace posterior a la combinación, pero puede manipular fácilmente su propio enlace posterior a la combinación (que controla por completo, ya que está en su propio repositorio) para obedecer una variable de entorno. Por ejemplo, un script de shell podría comenzar con:
#! /bin/sh
warn() {
echo "warning: $1" 1>&2
}
case ${SKIP_POST_MERGE_HOOK:-no} in
yes) exit 0;;
no) ;;
*) warn "mystery value ${SKIP_POST_MERGE_HOOK} for SKIP_POST_MERGE_HOOK";;
esac
... rest of code as usual ...
Ahora si quieres correr git merge
pero pasa por alto el gancho (o ejecuta algo como el git pull
script de conveniencia que se ejecuta git merge
para usted), simplemente configure SKIP_POST_MERGE_HOOK=yes
por la duración:
$ SKIP_POST_MERGE_HOOK=yes git merge ...
Un enfoque simple (sin tener que alterar los archivos de configuración) que funcionó para mí es:
git merge main
- Solucionar conflictos de fusión, si los hay
git add .
git commit --no-verify
git push
Este es un ejemplo, por lo que definitivamente puede especificar qué archivos agregar y agregar un mensaje de confirmación también. Me enfrenté al mismo problema que el OP al intentar git merge --continue
.
versión de git: 2.35.1
He hecho el truco usando el GIT_REFLOG_ACTION
Variable ambiental.
Cuando usas git pull
encontrarás que GIT_REFLOG_ACTION=pull
en tu gancho de git.
Por lo tanto, puede hacer algo como lo siguiente:
# if git pull, abort
if [[ $GIT_REFLOG_ACTION == "pull" ]]; then
echo "git pull detected, aborting"
exit 0
fi
¡Espero que esto pueda ayudar!
Parece que estás en el camino correcto con
--no-verify
qv esta publicación SO.– Tim Biegeleisen
30 de octubre de 2015 a las 6:24