martes, 13 de marzo de 2018

GitHub (1): Uso de comandos en línea

1. Introducción

Si se quiere trabajar con Eclipse en equipo o si se tienen diferentes máquinas para trabajar en un mismo proyecto es conveniente tener un repositorio. En nuestro caso elegimos Github

Es de mucha ayuda este enlace de Stackoverflow. Y tambien Roger Dudler.






2. Instalar github

Para ello vamos a https://git-scm.com/ y le damos a Dowloads


Y en nuestro caso seleccionamos Linux/Unix

Y entre otras aparecen las instrucciones para Ubuntu


Ejecutamos lo que nos dicen


sudo add-apt-repository ppa:git-core/ppa 
sudo apt update
sudo apt install git


3. Crear una cuenta y repositorio remoto en Github


Vamos a https://github.com/ y creamos una cuenta, donde le damos nuestro nombre, email y contraseña




En mi caso el usuario es ximodante y el repositorio es OpenWebMaven

No crear los ficheros LICENSE ni README.md ahora, si no tendremos problemas de  sincronización.


También sale un recordatorio de comandos a usar



4. Inicializar un repositorio local git

Vamos a la carpeta donde está nuestro proyecto y en una ventana de sistema ejecutamos


git init

Y nos crea en dicho directorio una carpeta llamada .git


5. Registrar el repositorio local con un repositorio remoto

Así se puede guardar y extraer la información de/desde el repositorio remoto. Para ello se utiliza la sentencia general git remote add origin https://github.com/[username]/[reponame].git que quedaria para mi caso:


git remote add origin https://github.com/ximodante/OpenWebMaven.git


6. Llenar por primera vez el repositorio local

Como tanto el repositorio local como el remoto están vacíos, vamos a llenar primeramente el repositorio local. Para ello comprobar que en la ventana de comandos estamos en la carpeta de nuestro proyecto y para hacer un commit (carga) en nuestro repositorio local. Ejecutamos:


git commit -a -m "Initial commit"

7. Trasladar el contenido desde el repositorio local al remoto

Una vez lleno el local, lo copiamos al remoto así:


git push -u origin master

Y nos va a pedir el usuario y la contraseña.

Si por el contrario queremos copiar el contenido del repositorio remoto en el local (proceso inverso) ya que queremos tener una copia en otro ordenador.


8. Resumen (de Roger Dudler)

La forma de trabajar es la siguiente:

A. Repositorio local: que consta de 3 árboles:

  1. Directorio de trabajo: Que contiene los archivos.
  2. Index: que actua de zona intermedia.
  3. Head: que apunta al último commit realizado


B. Add & commit
  1. Añadir un fichero al index: git add <filename>
  2. Añadir todos los ficheros del directorio al index: git add . 
  3. Hacer commit a los cambios: git commit -m "Commit message" 
  4. Ahora hemos guardados los archivos en el HEAD, pero NO está en el repositorio remoto.


C. Envío de cambios
  1. Enviar cambios desde el HEAD al repositorio remoto, donde master es un nombre de rama que podemos cambiar el nombre: git push origin master   
  2. Si nuestro repositorio no ha sido clonado (desde un repositorio remoto) y queremos conectarlo a ese repositorio remoto: git remote add origin <server>    . A partir de ahora se podrán subir los cambios al repositorio remoto escogido.

C. Ramas

  1. La rama master es la rama por defecto cuando se crea un repositorio.
  2. Se crean ramas durante el desarrollo y se fusionan con la principal cuando termines.
  3. En el dibujo se crea una nieva rama llamada "feature_x". Para cambiarse a esta rama indicamos: git checkout -b feature_x 
  4. Si queremos volver a la rama principal: git checkout master
  5. Y si ahora queremo borrar la rama : git branch -d feature_x  
  6. Si por el contrario se quiere subir la nueva rama al repositorio remoto (mientras no la hayamos borrado!!) : git push origin feature_x  


D. Actualizar y fusionar:
  1. Para recoger todos los cambios del repositorio remoto al local: git pull . Con este comando  hemos bajado y fusionado los datos remotos
  2. Para fusionar otra rama a tu rama activa: git merge <branch> 
  3. En los 2 casos anteriores git intentará fusionar automáticamente los cambios. Pero seguramente aparecerán CONFLICTOS.
E. Resolución de conflictos de versionado:
  1. Se tienen que resolver manualmente.
  2. Se modificarán manualmente los ficheros conflictivos.
  3. Se añadirán al git: git add <filename>  
  4. Antes de fusionar los cambios (con merge) se observarán las diferencias entre las dos ramas: git diff <source_branch> <target_branch> 
F. Etiquetas: Es una manera de nombrar las versiones (stackoverflow)
  1. Si quiere crear una etiqueta: git tag v1.0.0
  2. Para que el repositorio remoto se entere de esta etiqueta: git push origin v1.0.0
  3. Si queremos que se envien todas las etiquetas: git push --tags   
G. Reemplazar los cambios locales:
  1. A veces cometemos errores y queremos reemplazar los cambios de un fichero de nuestro directorio de trabajo con lo que hay en el HEAD ( el HEAD es en el repositorio local). Para ello hacemos: git checkout -- <filename> 
  2. En cambio los cambios agregados al Index así como los nuevos arechivos, se mantendrán sin cambios con el comando anterior.
  3. Si queremos deshacer todos los cambios locales y commits, tenemos que descargar la última versión que hay en el servidor remoto: git fetch origin y para apuntar a la copia local principal git reset --hard origin/master 
  HOtros:
  1. Hau un interface gráfico que se ejecuta (si no está instalado se ejecuta sudo apt install gitk) que es gitk 
  2. Para añadir archivos de forma interactiva: git add -i 

No hay comentarios :

Publicar un comentario