2012-07-28 10 views
7

Aún me cuesta trabajo familiarizarme con el concepto de puesta en escena tal como se aplica a Git.Obteniendo el concepto de Git de "etapa"

¿Se pueden hacer analogías con SVN? ¿Cuál es el propósito principal de tener un nivel de escenario en Git?

+1

Pedagidismo: no es "GIT", es "Git". No es un acrónimo/abreviación de nada, Linus lo nombró a sí mismo. – millimoose

+1

ok gracias, lo tengo;) –

Respuesta

7

Similitudes:

archivos que deben formar parte del repositorio hay que añadir con el fin de ser rastreado. Ambas herramientas usan el comando add para lograr esto. Agregar archivos significa preparar una confirmación.

Diferencias:

Git permite una cierta otra clase de detalles al añadir archivos. Puede decidir agregar un archivo completo o líneas de código distintas. Agregar archivos al índice o etapa permite más flexibilidad. SVN confirma automáticamente todos los cambios en un archivo que ya se ha agregado al repositorio. Git deja la decisión de qué cambios asociar con cada operación de confirmación al usuario. En otras palabras: el siguiente commit en Git solo contiene los cambios (líneas o archivos) que se han realizado, independientemente del estado de seguimiento de los archivos. SVN incluye automáticamente todos los cambios en los archivos rastreados.

Información adicional:

tratar de leer algunos mensajes que describen los flujos de trabajo Git tales como el de Oliver Steele. Pero tenga en cuenta que no es una forma de usar Git, hay muchas. Si lo desea, puede usar Git como si estuviera trabajando con SVN.
No espere comprender la filosofía de Git en un corto período de tiempo. Me tomó un año entrar en él y todavía aprendo nuevas formas de usarlo. Creo que es aún más difícil si creciste con la mentalidad de SVN. Hay toneladas de materiales por ahí: artículos, videos, ... - tómese su tiempo y pruebe algunos de ellos. Aquí hay una selección de la lista que recolecté.

+0

Gracias. Creo que el comando 'pull' es muy similar al comando SVN 'update'. ¿No? –

+0

¿Estoy en lo correcto al asumir que los "conflictos" se evitan al usar Git, ya que debe hacer un pull primero antes de hacer un push, cuando colabora con otro dev? –

+0

¿Y que una actualización es algo análoga a un tirón de Git? –

6

La principal ventaja del área de ensayo es que puede comprometer fácilmente solo una parte de los cambios en un archivo determinado. (Por ejemplo, usando git add -p). Hasta donde yo sé, la única forma de hacer una confirmación "parcial" en SVN es en un nivel por archivo, o haciendo una copia de seguridad manual de un archivo y luego revertir temporalmente los cambios que no realiza quiero comprometerme

Esto es genial si (como yo) no eres un desarrollador altamente organizado y quieres poder ordenar los cambios en confirmaciones "ordenadas" después del hecho. Esto sigue la actitud general de Git de preferir darle flexibilidad sobre hacer cumplir el rigor. Si no lo necesita, siempre puede simplemente no usarlo y usar git commit -a ....

No hay analogías para hacer con SVN porque SVN no es Git y no tiene ese concepto.

4

Éstos son algunos de los escenarios que muestran la utilidad de la puesta en escena:

  • Trabajas en una pieza en particular y has realizado algunos cambios en tu proyecto. No quiere comprometerlos aún antes de probar todo. Pero estos cambios a menudo pueden ser lo suficientemente independientes como para hacer múltiples confirmaciones lógicas que una sola gran. Esto es cuando se organizan partes selectivas y se hacen múltiples commits.

  • La estadificación ha sido especialmente útil durante la depuración. Puede rociar alrededor de las instrucciones de registro para rastrear el origen del error. A continuación, realice la corrección y vuelva a probar utilizando esas instrucciones de registro. Pero luego, desea confirmar la corrección antes de realizar cualquier cambio en el código para eliminar esas instrucciones de registro.

  • Otro escenario en el que ha demostrado ser útil es cuando está en medio de hacer algo, y encuentra algo no relacionado, como un error tipográfico, que desea corregir y quitarlo del camino rápidamente.

hay varios otros tales escenarios, y probablemente no sería capaz de trabajar con cualquier cosa que carece de este concepto, una vez que se obtiene una caída de ella :).

PD: No he utilizado SVN en absoluto, por lo que no puedo hacer las comparaciones entre los dos.

+1

Nada de lo que dices aquí requiere un área de preparación. Por ejemplo, puedes hacer múltiples cambios en múltiples commits con 'git commit '. Por supuesto, esto pasa por el área de preparación, pero solo brevemente en su camino directo al compromiso. – Kaz

+0

Simplemente quería resaltar el concepto de puesta en escena a través de algunos escenarios. Puede lograr un objetivo único de muchas maneras. Esta no es una lista completa de escenarios en los que la puesta en escena es útil, ni la puesta en escena es la única forma de lograr estos resultados. Solo ejemplos de mi experiencia para comprender las ventajas de la puesta en escena. – Sailesh

Cuestiones relacionadas