Git: administrando múltiples sucursales

Tengo una aplicación desplegada en heroku. He conectado mi count de GitHub a heroku, así que si envío algo a la twig master , se implementa automáticamente en heroku y se pone a disposition del cliente.

Para mejorar este process, he creado una twig de development donde inserto todo mi código mientras desarrollo y pruebo mi código. Una vez que el código esté listo, quiero pasarlo a la twig master para desplegarlo en heroku.

Lo que hice:

Crear twig

 git branch development 

Acceso a la twig de desarrollo

 git checkout development 

Impulsó cambios a la twig de desarrollo

 git add . git commit -am "did something" git push -u origin development 

Todo esto funcionó.

Mi problema:

No puedo averiguar el process correcto y cómo hacer lo siguiente desde la console:

  1. Impulsa los cambios del development a la twig master , por lo que dicen que son iguales
  2. ¿Debo crear una nueva twig cada vez que estoy desarrollando o puedo seguir reutilizando la twig de development ?

Tienes dos problemas:

  1. Actualizar la twig master desde la twig de development , y
  2. decidir sobre el flujo de trabajo general.

Actualización de la twig master

La forma más fácil de mantener su maestro sincronizado con la twig de desarrollo es fusionarse localmente en la twig de desarrollo y luego enviar la actualización maestra a su repository de GitHub:

 git checkout master git merge development git push origin master 

Si no se hizo ningún trabajo en la twig principal directamente (como usted alude en su pregunta), la fusión debe avanzar rápidamente .

Luego puede verificar la twig de desarrollo nuevamente y continuar trabajando:

 git checkout development 

Con todo, el gráfico de este procedimiento seguiría algo como esto:

 -- A -- B -- C merge -- A -- B -- C | | -------> | master development master, development 

Ahora, en la parte más complicada:

Elegir tu flujo de trabajo

Existen innumerables forms de administrar sus sucursales, y no existe una solución canónica para todos, que funcione para proyectos de todas las escalas y complejidades. Ese es el poder de un sistema tan flexible como el git, pero a la vez un pequeño inconveniente, porque ¿ qué sistema elegirías ?

Yo recomendaría mirar algunos artículos y publicaciones de blog sobre git workflows y luego elegir uno que se adapte a usted. Si cambian las condiciones de contorno de su proyecto, siempre puede volver a evaluar y cambiar el flujo de trabajo de git para ese proyecto como mejor le parezca.

¿Debo crear una nueva twig cada vez que estoy desarrollando o puedo seguir reutilizando la twig de desarrollo?

Con el procedimiento descrito anteriormente, puede continuar trabajando en su twig de desarrollo sin ningún paso adicional.

Te recomiendo que te tomes un time para ver algunos videos de git workflow, debes crear una twig para cada nueva funcionalidad, en un proyecto real, una twig no debe permanecer abierta por más de 2 días para evitar problemas de fusión.

Use git merge para importar los cambios de la twig al maestro https://git-scm.com/docs/git-merge

  1. Puede fusionar su twig de desarrollo en maestro o maestro de rebase en su twig de desarrollo. Algunas personas piensan que una solución es mejor que la otra, pero eso depende de usted. Aquí hay buenas explicaciones sobre las diferencias.

  2. Esta pregunta es realmente sobre el flujo de trabajo. La única regla es que todas las personas que están trabajando en ese git repo están de acuerdo con lo que harán. Entonces, si estás solo, puedes hacer lo que quieras. Pero, una vez más, algunas personas dirán que debe crear nuevas sucursales para cada function y optar nuevamente por usted.

  3. Te aconsejaría que uses un cliente GUI para Git. Hay, entre otros, SourceTree , GitKraken o GitHub Desktop . Actualmente estoy usando GitKraken, y me permite manejar un flujo de git con bastante facilidad.