Aprendiendo Git. Necesito saber si estoy en el path correcto

Antes de comenzar a usar Git como mi SCM, probaba "a background" el código para verificar la estabilidad, luego copyba el directory de trabajo y lo cambiaba a algo así como (date) project_name. Entonces, si metí la pata en algún lado y no pude desenterrarme, empezaría desde el último directory estable. Entonces escuché acerca de Git.

Quiero saber si estoy usando Git correctamente hasta ahora. Esto es lo que he estado haciendo:

  1. escribe un código …

  2. git add . para agregar todos los files cambiados al escenario

  3. git status para verificar si esos files cambiados están listos para comprometerse

  4. git commit a comprometer los últimos cambios y escribir un post de confirmación

  5. repetir

Hasta ahora esto es todo lo que he estado haciendo. Para fines simples de copy de security y para la capacidad de volver a una "estabilidad previa" ¿es este conocimiento suficiente de Git? Si no, ¿qué más debería saber?

Si todo lo que quiere hacer es restablecer a una confirmación anterior cuando algo sale mal, entonces sí, eso es todo. Aunque puedes combinar todos los pasos de git en uno con:

 git commit -a 

(que confirma todos los files rastreados cambiados)


Buscaría ramificación y labeldo si tiene time, pero no son estrictamente necesarios para lo que está haciendo, solo tienden a facilitar la vida

Como otros han mencionado, recomiendo sentirse cómodo con las twigs. Mi flujo de trabajo es típicamente:

A partir de la twig master *:

  • git checkout -b awesome-new-killer-feature crea una nueva twig (-b) y haz que se desprotege.

  • escribe un código …

  • git add . , git status , git commit commit come pequeños cambios, repita el paso 2

¡Oh no! ¡Mi amigo acaba de informar un error grave! Perdió datos !!!!!

  • git checkout master vuelve a la twig principal

  • git checkout -b bugfix-serious-data-loss crear nueva twig para revisión

  • corregir errores, git add , git status git commit , git commit , enjuagar, repetir hasta que se resuelva el error

  • git checkout master vuelve a la twig principal

  • git merge --no-ff bugfix-serious-data-loss error de fusión git merge --no-ff bugfix-serious-data-loss arreglar de nuevo en el maestro

OK, ahora puedo volver a trabajar en mi function awesome-new-killer:

  • currículum vitae git checkout awesome-new-killer-feature reanudar trabajando en lo que estaba trabajando

  • git rebase master fusiona los cambios de vuelta al maestro en el código de trabajo para que obtengamos el beneficio de la corrección de errores. Sin mencionar que esto networkinguce la probabilidad de conflictos de fusión más adelante cuando necesitamos fusionar esta twig de nuevo para dominar

  • escribir código, git add , git status git commit , git commit , enjuagar, repetir hasta que la function esté completa

  • git checkout master , git merge --no-ff awesome-new-killer-feature fusiona la twig de nuevo en master

Ahora siéntese y escriba gitk para ver una bonita vista histórica de lo que ha estado haciendo.

Opcional:

  • git branch -D bugfix-serious-data-loss awesome-new-killer-feature elimina las twigs no utilizadas. Me gusta mantener mi repository limpio

El poder de git no proviene de poder controlar tu trabajo. Viene de qué tan rápido y barato es la ramificación y fusión. La ramificación le permite trabajar en múltiples ideas al mismo time y / o experimentar con ideas desechables sin afectar su código estable. Si la idea no funciona, simplemente elimine la twig, si funciona, vuelva a fusionarla en el maestro.

* nota: por convención, la mayoría de los usuarios de git llaman a su twig principal / troncal "maestra".

Sí, lo estás haciendo bien 🙂 Antes de comprometerse, a veces es una buena idea ejecutar el siguiente command:

 git difftool 

Esto le permitirá revisar todos los cambios de código en su herramienta de diferencias favorita (por ejemplo, Beyond Compare, KDiff3, etc.). Simplemente presione intro para abrir la herramienta, asegúrese de que todo esté bien y cierre el progtwig. Luego presiona enter nuevamente para modificar automáticamente el siguiente file modificado.

Si está usando Windows, aquí hay un buen tutorial sobre cómo configurar su herramienta favorita de diff (y fusión).

Uso gitk --all para visualizar mi historial de revisiones y cambios no confirmados en todas las twigs, y uso git commit -am "commit message" para agregar y confirmar en un command.

También recomendaría usar twigs generosamente. Hago desarrollo web, así que haré que la twig principal refleje el estado del código en el server, y crearé una nueva twig cada vez que esté trabajando en una gran function. De esta forma, si tengo una solución de emergencia, puedo verificar fácilmente la twig principal, comprometer y cargar la solución y volver a fusionarla en la function en progreso.

Y para una forma práctica de previsualizar los cambios antes de agregarlos,

 git diff