2010-01-21 19 views
8

Estoy usando git y he trabajado mucho en mi repositorio local la semana pasada.Buenas prácticas de commit de Git Big

Me gusta hacer muchos pequeños commits (como 2 o 3 archivos) en lugar de grandes, pero esta vez entre la presión del tiempo y que el cambio implicó muchos archivos, tengo un montón de archivos sin grabar.

Mi pregunta es, ¿cuál es la mejor práctica en este escenario? ¿Hay alguna herramienta que me permita dividir el trabajo en pequeños commits?

Tenga en cuenta que yo no sé cómo a la etapa de archivos de uno a la vez y hacer que los pequeños compromete a mano, pero tengo miedo de cometer un error y crear un commit que deja el código en un estado incoherente (como no compilando o trabajando mal).

Gracias!

Respuesta

9

git add -i debe ayudarle a dividir compromete a trozos, a continuación, git stash resto del código, comprobar si todo funciona, git commit, git stash pop y bucle.

+0

La clave aquí es 'git stash'; el OP dice que ya sabe cómo dividir commits, aunque tenga en cuenta que '-p' (' --patch') a menudo es más útil que '-i' (' --interactive'). – Cascabel

+0

Jefromi, el OP dice que sabe cómo organizar * archivos a la vez *. –

+0

Me gusta usar 'git add -i' y luego seleccionar' p (patch) 'en el menú interactivo ... de esta forma puedes organizar trozos elegidos de varios archivos, todo de una vez. Luego, verifique con 'git diff --cached' antes del commit. – grossvogel

2

Puede organizar parte de un archivo con git add --patch. Esto debería permitirle comprometer conjuntos de cambios relacionados, sin comprometer otros cambios no relacionados que ocurran en los mismos archivos.

Y si desea probar la corriente HEAD sin perder todo su trabajo comprometido, git stash es su amigo.

+1

También tenga en cuenta: git stash -p –

1

Personalmente, encuentro que git add -i es un poco engorroso para trabajar, ya que me resulta difícil ver lo que realmente está haciendo.

Sin embargo, git gui resulta ser bastante bueno en etapas y desestatalización por hunk y también por línea. Ocasionalmente, necesita un poco de apoyo haciendo una edición temporal rápida antes de la puesta en escena e inmediatamente invirtiendo la edición, pero la mayoría de las veces git gui me funciona muy bien.