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:
escribe un código …
git add .
para agregar todos los files cambiados al escenario
git status
para verificar si esos files cambiados están listos para comprometerse
git commit
a comprometer los últimos cambios y escribir un post de confirmación
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