Así, soy bastante nuevo en git y he después de un poco de lectura en torno a lo largo del último par de semanas he leído un par de gente que dice que la rama principal no debe ser cambiado, sino más bien ramificada y luego se fusionaron para.

Estoy bastante feliz de trabajar con las ramas, pero se preguntaba por las razones de no trabajar en la rama master?

5 Comentarios

  1. 27

    supongo que el razonamiento habitual es, que la rama principal que debe representar a la ‘estable’ la historia de su código. el uso de ramas para experimentar con nuevas características, ponerlos en práctica, y cuando han madurado lo suficiente puede combinar de nuevo a la maestra.

    de esa manera el código en maestro casi siempre va a generar sin problemas, y puede ser en su mayoría utilizados directamente para la prensa.

    vamos a tomar git.git (el oficial repositorio git) como un ejemplo. hay varias sucursales, más notable:

    así, master contiene código que es muy probable que termine en la próxima versión de git. next contiene probado el código que podrán ser fusionadas en el master rama. pu (propuesta de actualizaciones, si mal no recuerdo) contiene bastante nuevo (y probablemente) código no probado.

    pu se considera inestable y se reiniciará y se pasa a junio del gusto. next que podría conseguir que se restablece después de un lanzamiento o durante un ciclo de liberación, pero esto es menos común. master está escrito en piedra y nunca cambió después de que ha sido empujado y públicamente disponibles.

    que ver, que cambios se combinan de pu a next y de next a master si se considera digno y no romper cosas.

    la rama maint se utiliza para hacer las correcciones que deben aplicarse también a las versiones anteriores de git. maint generalmente se fusionaron para next y/o master.

    usted puede inspeccionar las ramas en http://git.kernel.org/?p=git/git.git;a=resumen

    • Gracias. Veo el beneficio en esto, en que sería posible trabajar con varias características o correcciones de errores simultáneamente en diferentes ramas y fusionarlas regreso a la rama principal (tronco?) a medida que maduren.
    • sí, si usted viene desde el svn, que se utilizan para llamar a la rama master trunk. son muy similares, pero con git (y cualquier otro distribuidos vcs) hay muchos master ramas (cada repositorio clonado tiene uno), por lo que el árbol de la metáfora no tiene mucho sentido ya
    • Excelente. Gracias por la ayuda.
  2. 54

    Otras personas han hecho muy buenos casos para no hacer los cambios directamente en master, y estoy de acuerdo con ellos. Sin embargo, siempre defendiendo los flujos de trabajo como esto a veces lleva a la gente nueva a git a creer que es innecesariamente complejo, así que yo quería para proporcionar un contrapunto.

    Si usted tiene una persona o un equipo muy pequeño y su desarrollo es muy lineal, es decir, que rara vez trabajan en más de una cosa a la vez y cada característica suele ser completado antes de iniciar la siguiente, realmente hay poco o ningún beneficio para no trabajar directamente fuera de master. Es muy fácil volver atrás y añadir una sucursal en cualquier punto de surgir la necesidad. Recomiendo altamente consciente de la rama de la característica de flujo de trabajo, pero si sientes que en tu caso es simplemente agregar pasos adicionales sin necesidad de comprar nada, prometo que no voy a contar el git de la policía.

    • No es que a menudo que veo a los dos muy diferentes, pero igual de meritorio respuestas a una pregunta aquí. Este es un caso. Demasiado malo PARA no permitir la aceptación de respuestas múltiples.
  3. 8

    La única cosa que usted necesita considerar con un DVCS (Distribuido Sistema de Control de versiones) como Git o Mercurial es la «publicación» de flujo de trabajo (ortogonal a la ramificación de flujo de trabajo).

    Cuando usted tiene sólo las ramas, usted se preguntará ¿qué esfuerzo de desarrollo que representan.

    Si master está destinado a representar el código estable, como knittl detalles en su respuesta, entonces sí, usted necesita a la rama de combinación para master.

    Pero cuando se puede clonar/push/pull (que es publicar en diferentes repositorios, que pueden tener diferentes fines en sí mismos), luego ‘master‘ puede jugar un papel diferente del repo a la repo.

    • un desarrollo repo puede tener muchas ramas, con master generalmente representa el más estable de código.
    • una implementación repo sólo puede tener master, y algunas revisiones de mantenimiento de la rama urgentes correcciones.
    • un local de ensayo repo sólo puede tener un master rama, reescrito de empuje para empujar con el fin de ejecutar algunas de análisis estático de código por un gancho que los monitores sólo dijo master rama de la prueba de repos.
    • Este es un apreciado/bajo documentado aspecto del uso de git que me encantaría ver más detalles. En mi lugar de trabajo, todavía estamos usando git como el monolítico repositorio para todas las funciones, el uso de ramas de diferenciar las funciones.
  4. 2

    Cuando se hace se compromete a ambos lados-que significa en tu repositorio local y aguas arriba por ejemplo, de otros miembros del equipo-puede suceder que comete el conflicto. Esto significa que los archivos y, en particular, las líneas fueron editados por tanto. En este caso, algunos fusión manual de manipulación es necesaria.

    La master rama es para tener una sucursal local que representan aguas arriba cuando usted no puede tener acceso a aguas arriba (el uso del móvil o fallo en la red). Es mucho más fácil hacer combinación de resolver y otras cosas cuando se tiene una sucursal local que representa la parte de arriba de los cambios.

    • la pregunta no era sobre aguas arriba/aguas abajo, pero ¿por qué utilizamos la función y el mantenimiento de las ramas etc.
    • Interesante respuesta. Nunca he oído de nadie que el uso de la rama principal como caché para arriba para desconectada la fusión.
    • No puedo excluir otras razones por haber master y algo más. Pero Wilburt exclicitly preguntó por qué tener una master que no ha cambiado en absoluto, pero sólo se utiliza para la fusión. Cuando me enteré de Git me dijeron que para salir de master virgen, y funcionó bastante bien. Con más experiencia, por ejemplo, en la fusión de uno puede guardar esa parte.
  5. 0

    No estoy seguro si mi interpretación es correcta, soy nuevo en git.

    Creo que hace la vida más fácil cuando se tienen varias características.Digamos que usted tiene un proyecto y trabajar en función de Una, luego de implementar la característica B.

    Ahora puede suceder, que decide que la característica de todo era un error, y usted quiere tener una versión de tu proyecto con la única función de B, pero sin A.
    Si todo está en el maestro, esta tarea es difícil.

    Si cada característica en su propia rama, entonces esta tarea es fácil:
    Usted toma el viejo maestro de la versión (sin Una y sin la B).
    La combinación de la rama B.
    Hecho.

    • Aunque este flujo de trabajo también puede lograrse a través de la función de banderas (suponiendo que cada función está destinada a la producción), que sin duda podría ser más fácil en git si, por ejemplo, la función de la Filial es tan inestable que va a ser dejado de lado.

Dejar respuesta

Please enter your comment!
Please enter your name here