Lo frustrante es que esto solía ser posible y era una sintaxis estándar para confirmar y agregar cualquier archivo nuevo: git commit -a Pero fiel a la forma, la sintaxis de git cambió. Confundió a los usuarios existentes (y rompió sus scripts), eliminó funcionalidades útiles y sustituyó una bandera innecesaria.
fijiaaron
1
Hay un duplicado de esto en git add -A, git commit en un comando? . La respuesta aceptada allí es similar a la respuesta aceptada aquí, pero sugiere crear un alias git para acortar el tipeo involucrado (y muestra cómo hacerlo).
Actualice el índice no solo donde el árbol de trabajo tiene una coincidencia de archivos, sino también donde el índice ya tiene una entrada. Esto agrega, modifica y elimina las entradas de índice para que coincidan con el árbol de trabajo.
Si no <pathspec>se da cuando se usa la opción -A, todos los archivos en todo el árbol de trabajo se actualizan (las versiones anteriores de Git se usan para limitar la actualización al directorio actual y sus subdirectorios).
@NarendraJaggi git add -A && git commit -m "Tu mensaje"
Dr.jacky
1
uno podría poner eso en su propio archivo .sh o .bat y simplemente usarlo como un comando. El mensaje podría ser param1
BlueWizard
Y también puede agregar accesos directos para los comandos básicos de git en su .bashrc: alias gpl = 'git pull' alias gps = 'git push' alias gc = 'git commit' alias gs = 'git status' alias gd = 'git diff' alias ga = 'git add' alias gck = 'git checkout' alias gb = 'git branch' alias gl = 'git log' alias lcp = 'git format-patch -1 HEAD' alias resetToMaster = 'git reset --duro origen / master '
ni3
3
En powershell reemplace "&&" para ";" para ejecutar ambos comandos, así:git add -A ; git commit -m "Your Message"
Rafael Miceli
415
Este comando agregará y confirmará todos los archivos modificados, pero no los archivos recién creados .
git commit -am "<commit message>"
De man git-commit:
-a, --all
Tell the command to automatically stage files that have been modified
and deleted, but new files you have not told Git about are not
affected.
En realidad, esto no responde a la pregunta, de hecho específicamente (en negrita no menos) excluye una de las partes clave de la solución buscada.
Arunas
66
No agrega ni confirma archivos sin seguimiento.
b15
3
Pero cubre la situación más típica cuando se compromete después de "git add -A" y se da cuenta de que olvidó cambiar algo pequeño en el código. Odio escribir el mismo mensaje de confirmación varias veces desde cero
KorbenDallas
pero el iniciador de hilo dice TODOS LOS ARCHIVOS, entonces, creo que este no cuenta
Frederick G. Sandalo
Y también puede agregar accesos directos para los comandos básicos de git en su .bashrc: alias gpl = 'git pull' alias gps = 'git push' alias gc = 'git commit' alias gs = 'git status' alias gd = 'git diff' alias ga = 'git add' alias gck = 'git checkout' alias gb = 'git branch' alias gl = 'git log' alias lcp = 'git format-patch -1 HEAD' alias resetToMaster = 'git reset --duro origen / master '
ni3
26
Yo uso esta función:
gcaa() { git add --all && git commit -m "$*" }
En mi archivo de configuración zsh, así que solo puedo hacer:
> gcaa This is the commit message
Para organizar y confirmar automáticamente todos los archivos.
Después de ejecutar ese comando, puede escribir git temppara que git confirme automáticamente todos sus cambios en la rama actual como una confirmación denominada "Temp". Luego, puede usar git reset HEAD~más adelante para "confirmar" los cambios para poder seguir trabajando en ellos, o git commit --amendpara agregar más cambios a la confirmación y / o darle un nombre apropiado.
Odiaría trabajar con un repositorio lleno de mensajes de confirmación que digan "ninguno", y también rechazaría cualquier RP sobre esa base. Desafortunadamente, la única forma en que puede aprender la importancia de tener buenos mensajes de confirmación es cuando tiene que volver a auditar algo escrito hace mucho tiempo ("esta línea está causando un error ... ¿por qué se agregó? romper si lo cambio / elimino? ").
gregmac
1
Los compromisos con "ninguno" nunca tienen la intención de permanecer por mucho tiempo. Normalmente comienzo mi propia rama de características, hago micro commits y los convierto en algo más razonable antes de una fusión. Obviamente, las personas que hacen commits para cada función modificada y no les importa un registro completo de git no lo necesitan.
SystematicFrank
1
Utilizo 'wip' (abreviatura de "trabajo en progreso") en lugar de 'ninguno' para este propósito y solo envío tales confirmaciones a mis sucursales privadas.
Sergej Koščejev
Todavía no es útil, porque eventualmente esos compromisos de "wip" o "none" lo convertirán en una rama que otras personas ven, y contaminarán el registro de mensajes. Si está aplastando todos sus compromisos antes de presionar, eso sería aceptable, pero de lo contrario sigue siendo molesto para el equipo.
Jordania
Esta es una buena idea, y combinándola con la siguiente respuesta, puede obtener la respuesta 100% precisa para el OP. De hecho, describí los pasos necesarios (usando git-bash) en mi respuesta. ( stackoverflow.com/a/43442269/869239 )
VeRo
3
Ejecuta el comando dado
git add .&& git commit -m "Changes Committed"
Sin embargo, incluso si parece un solo comando, son dos comandos separados que se ejecutan uno por uno. Aquí solíamos &&combinarlos. No es muy diferente a correr
git add .y por git commit -m "Changes Committed"separado. Puede ejecutar varios comandos juntos, pero la secuencia importa aquí. Cómo, si desea enviar los cambios al servidor remoto junto con la preparación y la confirmación, puede hacerlo como se indica,
En cambio, si cambia la secuencia y pone el pushprimero, se ejecutará primero y no dará el empuje deseado después de la puesta en escena y el compromiso solo porque ya se ejecutó primero.
&&ejecuta el segundo comando en la línea cuando el primer comando regresa con éxito, o con un nivel de error de 0. Lo contrario de &&es ||, que ejecuta el segundo comando cuando el primer comando no tiene éxito, o con un nivel de error de 1.
Alternativamente, puede crear alise as git config --global alias.addcommit '!git add -a && git commit -m'y usarlo comogit addcommit -m "Added and commited new files"
Puedes escribir un pequeño guión (mira la respuesta de Ian Clelland) llamado git-commitallque usa varios comandos git para realizar lo que quieres hacer.
Coloque este script en cualquier lugar de su $PATH. Puedes llamarlo por git commitall... ¡muy útil!
Encontrado aquí (pregunta y todas las respuestas lamentablemente eliminadas, solo visibles con alta reputación)
@Dimitri: desafortunadamente algunas personas estudiosas decidieron eliminar este útil hilo. Todavía es visible con gran reputación, así que mantengo el enlace aquí.
Respuestas:
Hace
cuenta como un "comando único"?
Edición basada en la respuesta de @ thefinnomenon a continuación :
Para tenerlo como
git alias
, use:y confirme todos los archivos, incluidos los nuevos, con un mensaje con:
Explicación (de la
git add
documentación ):fuente
git add -A ; git commit -m "Your Message"
Este comando agregará y confirmará todos los archivos modificados, pero no los archivos recién creados .
De man git-commit:
fuente
Yo uso esta función:
En mi archivo de configuración zsh, así que solo puedo hacer:
Para organizar y confirmar automáticamente todos los archivos.
fuente
function gcaa() { git add --all && git commit -m "$*" && git push }
gaa && gc -m "my commit"
pero es mucho más agradable ... <se apresura a cambiar bashrc ..>One-liner para organizar TODOS los archivos ( modificados , eliminados y nuevos ) y confirmar con comentarios:
http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit
fuente
No estoy seguro de por qué todas estas respuestas bailan en torno a lo que creo que es la solución correcta, pero lo que vale aquí es lo que uso:
Crea un alias:
Agregue todos los archivos y confirme con el mensaje:
NOTA:
coa
es la abreviatura de commit all y se puede reemplazar con cualquier cosa que su corazón deseefuente
git alias
camino, el resto es aburrido.Comprometerse en git puede ser un proceso de múltiples pasos o un paso dependiendo de la situación.
Esta situación es donde tiene varios archivos actualizados y desea confirmar:
Debe agregar todos los archivos modificados antes de comprometer algo.
o
Después de eso, puede usar commit todos los archivos agregados
con esto tienes que agregar el mensaje para este commit.
fuente
Si solo desea una forma "rápida y sucia" de ocultar los cambios en la rama actual, puede usar el siguiente alias:
Después de ejecutar ese comando, puede escribir
git temp
para que git confirme automáticamente todos sus cambios en la rama actual como una confirmación denominada "Temp". Luego, puede usargit reset HEAD~
más adelante para "confirmar" los cambios para poder seguir trabajando en ellos, ogit commit --amend
para agregar más cambios a la confirmación y / o darle un nombre apropiado.fuente
Tengo en mi configuración dos alias:
si soy demasiado vago, solo confirmo todos los cambios con
y solo para hacer un commit rápido
coa significa "cometer todo"
fuente
Ejecuta el comando dado
Sin embargo, incluso si parece un solo comando, son dos comandos separados que se ejecutan uno por uno. Aquí solíamos
&&
combinarlos. No es muy diferente a corrergit add .
y porgit commit -m "Changes Committed"
separado. Puede ejecutar varios comandos juntos, pero la secuencia importa aquí. Cómo, si desea enviar los cambios al servidor remoto junto con la preparación y la confirmación, puede hacerlo como se indica,En cambio, si cambia la secuencia y pone el
push
primero, se ejecutará primero y no dará el empuje deseado después de la puesta en escena y el compromiso solo porque ya se ejecutó primero.&&
ejecuta el segundo comando en la línea cuando el primer comando regresa con éxito, o con un nivel de error de 0. Lo contrario de&&
es||
, que ejecuta el segundo comando cuando el primer comando no tiene éxito, o con un nivel de error de 1.Alternativamente, puede crear alise as
git config --global alias.addcommit '!git add -a && git commit -m'
y usarlo comogit addcommit -m "Added and commited new files"
fuente
Excelentes respuestas, pero si buscas una línea única, puedes concatenar, alias y disfrutar de la comodidad:
git add * && git commit -am "<commit message>"
Es una sola línea pero dos comandos, y como se mencionó, puede usar un alias para estos comandos:
alias git-aac="git add * && git commit -am "
(el espacio al final es importante) porque va a parametrizar el nuevo comando de mano corta.A partir de este momento, usarás este alias:
git-acc "<commit message>"
Básicamente dices:
git, agrega para mí todos los archivos no rastreados y compromételos con este mensaje de confirmación dado.
Espero que uses Linux, espero que esto ayude.
fuente
Puedes escribir un pequeño guión (mira la respuesta de Ian Clelland) llamado
git-commitall
que usa varios comandos git para realizar lo que quieres hacer.Coloque este script en cualquier lugar de su
$PATH
. Puedes llamarlo porgit commitall
... ¡muy útil!Encontrado aquí (pregunta y todas las respuestas lamentablemente eliminadas, solo visibles con alta reputación)
fuente
intente usar:
fuente