2010-05-03 32 views
30

Soy un poco nuevo en git, y no entiendo por qué git commit -a solo cambia los archivos cambiados y eliminados, pero no los archivos nuevos.¿Por qué no se compromete git -a agregar nuevos archivos?

¿Alguien puede explicar por qué es así, y por qué no hay otra bandera de confirmación para permitir agregar archivos y comprometer in one command?

Por cierto, hg commit -A añade nuevas y archivos borrados al cometer

+1

Es posible que desee preguntar por qué está en la lista de Git . Esta podría ser una característica útil así que si alguien se preocupó lo suficiente como para agregarlo. – xenoterracide

+0

Supongo que no hay 'git commit -A' porque 1.) agregar nuevos archivos es relativamente poco común; también la mayoría de los demás VCS requieren explícitamente 'scm add ' paso 2.) '.gitignore' y los archivos similares no son perfectos, lo que podría llevar a agregar archivos no deseados para confirmar. –

+0

Esto definitivamente debería ser el comportamiento por defecto '-a' – juliangonzalez

Respuesta

17

Git es acerca del seguimiento de cambios . Depende de ti que digas qué archivos son lo suficientemente importantes como para rastrearlos. Se puede lograr el efecto deseado, así:

git add . ;git commit -a 

Asegúrese de que el archivo se actualiza .gitignore.

+0

Sí. Esto le permite mantener varios archivos que no desea rastrear en el repositorio, y solo agregar lo que está seguro de que desea rastrear. – Kzqai

+1

el -a es redundante si se hace en la raíz del repositorio. básicamente el que pregunta necesita – xenoterracide

+3

No, '-a' no es redundante. Asegura que las eliminaciones también estén organizadas. –

6

Kelly tiene razón, pero creo que otro factor es que mucha gente espera ese comportamiento porque CVS, Subversion y la mayoría de las otras herramientas lo hacen de esa manera.

Si Git cometió nuevos archivos, es posible que observe que ha cometido .o archivos hace mucho tiempo y, lo que es peor, que pueden dañar la compilación.

+1

No quiero que sea el predeterminado, pero quiero que me permita hacerlo. Puedo hacer git add. Entonces, ¿por qué no me permite hacerlo como parte del comando git commit? – splintor

9

que sugieren otra solución: usar git commit --interactive -m "your commit message" le mostrará este menú

*** Commands *** 
    1: [s]tatus  2: [u]pdate  3: [r]evert  4: [a]dd untracked 
    5: [p]atch  6: [d]iff 7: [q]uit 8: [h]elp 

que le permite comprobar el estado, añadir archivos sin seguimiento y así sucesivamente con pulsaciones de teclas simples.

6

Sospecho que la respuesta es simple (¡pero dudo que sea popular por decirlo!): Es probable que no haya un "por qué" deliberado en esto, aparte de cómo se cayó cuando los desarrolladores lo implementaron. La prioridad del proyecto Git nunca ha sido la facilidad de uso o la facilidad de uso.

Cuestiones relacionadas