Derek Molloy

Raspberry Pi® a fondo para desarrolladores


Скачать книгу

usando los mismos comandos:

      pi@erpi ~/test $ git add .

      pi@erpi ~/test $ git status

      On branch mybranch

      Changes to be committed:

      (use "git reset HEAD <file>..." to unstage)

       new file: testmybranch.txt

      Podemos hacer commit de este cambio en la rama mybranch del repositorio local. Este cambio afectará a la rama mybranch, pero no tendrá efecto sobre la rama maestra:

      pi@erpi ~/test $ git commit -m "Test commit to mybranch"

      [mybranch d4cabf3] Test commit to mybranch

      1 file changed, 0 insertions(+), 0 deletions(-)

      create mode 100644 testmybranch.txt

      pi@erpi ~/test $ git status

      On branch mybranch

      nothing to commit, working directory clean

      pi@erpi ~/test $ ls

      newfile.txt README.md testmybranch.txt testobject.o

      De la salida anterior puede apreciar que el archivo testmybranch.txt se encuentra en el repositorio local y podemos verlo en el directorio.

      Si ahora pasa de la rama mybranch a la rama maestra mediante git checkout master, observará algo interesante al solicitar un listado del directorio:

      pi@erpi ~/test $ git checkout master

      Switched to branch 'master'

      Your branch is up-to-date with 'origin/master'.

      pi@erpi ~/test $ ls

      newfile.txt README.md testobject.o

      Así es, el archivo testmybranch.txt ha desaparecido del directorio. Aún existe, obviamente, pero se encuentra en forma de objeto blob (de BLOB, Binary Large OBject, objeto binario grande), dentro del directorio git/objects. Si regresa a la rama y lista el directorio, verá esto:

      pi@erpi ~/test $ git checkout mybranch

      Switched to branch 'mybranch'

      pi@erpi ~/test $ ls

      newfile.txt README.md testmybranch.txt testobject.o

      Es decir, el archivo vuelve a aparecer. Por lo tanto, puede observar lo bien integrado que está el sistema de ramas de desarrollo. En este punto puede regresar a la rama maestra e introducir cambios en el código original y ver que los cambios introducidos en la rama mybranch no afectan al código maestro. Aun si cambiamos el código en el mismo archivo, carecerá de efectos sobre el código original de la rama maestra.

      ¿Qué ocurre si deseamos aplicar los cambios introducidos en la rama de desarrollo mybranch a la versión maestra del proyecto? Es decir, ¿cómo fusionamos las dos ramas? Pues utilizaremos el comando git merge.

      pi@erpi ~/test $ git checkout master

      Switched to branch 'master'

      Your branch is up-to-date with 'origin/master'.

      pi@erpi ~/test $ git merge mybranch

      Updating 3eea9a2..d4cabf3

      Fast-forward

      testmybranch.txt | 0

      1 file changed, 0 insertions(+), 0 deletions(-)

      create mode 100644 testmybranch.txt

      pi@erpi ~/test $ git status

      On branch master

      Your branch is ahead of 'origin/master' by 1 commit.

      (use "git push" to publish your local commits)

      nothing to commit, working directory clean

      pi@erpi ~/test $ ls

      newfile.txt README.md testmybranch.txt testobject.o

      Ahora el archivo testmybranch.txt está en la rama maestra y también se han aplicado el resto de cambios introducidos en cualquier otro documento de la misma. El repositorio local va ahora un commit por delante del remoto, y podemos utilizar git push para actualizar este último.

      Para borrar una rama de desarrollo, use el comando git branch -d mybranch:

      pi@erpi ~/test $ git branch -d mybranch

      Deleted branch mybranch (was d4cabf3).

      pi@erpi ~/test $ ls

      newfile.txt README.md testmybranch.txt testobject.o

      En este caso, la rama testmybranch.txt sigue presente en el proyecto maestro, como por otro lado deber ser, puesto que se ha fusionado con él. Si la rama se hubiera borrado antes de realizar la fusión, se habría perdido el archivo.

      La table 3-8 ofrece un resumen de los principales comandos de Git. Llegados a este punto, ya hemos visto el uso básico de Git. Cuando se desarrolla código directamente en el RPi, Git puede resultar muy útil, puesto que nos permite subir fácilmente nuestros desarrollos a un repositorio remoto. Esta funcionalidad sirve muy bien para realizar copias de respaldo de nuestro código, así como para volver a desplegar el proyecto en múltiples RPi.

      Table 3-8: Resumen de los principales comandos Git.

OperaciónDescripciónOperaciónDescripción
git cloneRealiza la clonación desde el repositorio remoto.git rmElimina un archivo o directorio del área de preparación.
git initCrea un repositorio completamente nuevo.git mvMueve o renombra un archivo o directorio en el área de preparación.
git pullFusiona cambios desde un repositorio maestro.git logMuestra un log (registro) con los commits. El histórico del proyecto.
git fetchEncuentra los cambios en el repositorio maestro sin realizar la fusión.git tagDa nombre a un commit (por ejemplo: versión 2).
git statusMuestra el estado del proyecto.git merge [name]Fusiona la rama.
git addAñade un nuevo archivo o edita un archivo existente.git showObtiene detalles sobre el commit actual o sobre cualquier otro.
git diff Muestra las diferencias que pasarán al repositorio cuando se haga el commit.git branch [name]Crea una nueva rama de desarrollo. (Use el parámetro -d para borrar (delete)).
git commitRealiza commit en el reposi-torio.git checkout [name]Cambia a otra rama de desarrollo.
git pushEnvía los cambios desde un repositorio local a uno remoto.

      El RPi es perfectamente capaz de actuar como plataforma de computación general, pero si planeamos compilar un núcleo de Linux o realizar desarrollo multiplataforma cruzado (véase el capítulo 7) lo más recomendable es utilizar un ordenador personal con Linux. Es posible utilizar un ordenador con un gestor de arranque que nos permita un sistema dual. Sin embargo, si mayoritariamente utilizamos un PC o un Mac, podríamos decantarnos por utilizar escritorios o máquinas virtuales.

      La virtualización de escritorio, o creación de máquinas virtuales, como también se conoce esta tecnología, permite que un solo ordenador ejecute varios sistemas operativos al mismo tiempo. Emplea tecnología de hipervisores (monitores de máquinas o escritorios virtuales) que incluyen elementos hardware, firmware y software para crear y ejecutar entornos de emulación software conocidos como virtual machines, máquinas virtuales o VM, por sus siglas en inglés. Si queremos ejecutar múltiples sistemas operativos en un solo PC, las máquinas virtuales ofrecen una alternativa a la configuración de un gestor de arranque con múltiples sistemas operativos.

      En un entorno de virtualización suele