Para aplicar los parámetros adicionales a cualquier cosa que no sea el final de la "línea de comando" de su alias, deberá colocar los comandos de la shell en una secuencia de comandos. Puede hacerlo con un script externo (como jdelStrother’s answer), o puede hacerlo con un script de shell "en línea".
Se puede utilizar para alimentar -m
git commit
su mensaje nuevo o utilice la opción -C HEAD
/--reuse-message=HEAD
tener que utilizar el mensaje y autor existente (que también podría volver a utilizar la marca de tiempo autor, pero que está restableciendo con --date=…
). El uso de cualquiera de estas opciones evitará que Git abra un editor para su mensaje de confirmación.
Aquí es como una “línea” shell script:
git config --global alias.sync '!sh -c '\''git commit --amend --date=today ${1+-m} "${1---reuse-message=HEAD}" && git rebase master'\'' -'
El núcleo de este pequeño script es el par de expansiones de parámetros condicionales:
${1+-m} "${1---reuse-message=HEAD}"
Cuando se llama con un extra parámetro (es decir, su mensaje de registro de reemplazo), estos se expanden a dos palabras de shell: -m "<your new log message>"
. Cuando no proporciona el parámetro adicional, se expande a una sola palabra: "--reuse-message=HEAD"
.
El tramo final también es importante; podría ser cualquier palabra de shell, el punto es que algo debe estar allí porque el shell lo usará para inicializar su parámetro $0
(que generalmente tiene un valor predeterminado, por lo que es inútil para la expansión condicional en sí).
Si no he entendido bien y que realmente quieren ver el editor cuando no se proporciona el parámetro adicional, a continuación, utilizar la única expansión ${1+-m "$1"}
en lugar del par de expansiones.
Posible duplicado de http://stackoverflow.com/q/3321492/923794 – cfi