Uso básico de smartGit

smartgithead

SmartGit es una herramienta multiplataforma de entorno fácil e intuitivo que nos ayuda con Git. Veamos como empezar a trabajar con esta herramienta usando Git y el alojamiento GitHub. Antes de empezar es importante crear una cuenta en el mundo maravilloso de https://github.com/

 INSTALACIÓN DE GIT

En linux es aconsejable que se instale git antes de instalar smartgit, para ello desde la terminal:

 sudo apt-get install git

 La opción manual seria descargar el paquete desde http://git-scm.com/ o en el terminal navegamos hasta la carpeta de Descargas y usar el comando:

 wget http://git-core.googlecode.com/files/git-version.tar.gz

 Luego descomprimimos el mismo:

 tar xzf git-version.tar.gz

 Ingresamos en el nuevo directorio e instalar con lo siguiente:

 cd git-version

sudo apt-get build-dep git-coresudo apt-get install libssl-devmake prefix=/usr/local install install-doc

 Demora un rato, pero esto es todo lo que necesitamos para instalar git en linux de manera manual.

 Puedes comprobar la instalación usando:

git –version

Las versiones de Windows y Mac de smartgit ya incluyen git, en windows se puede ejecutar el terminal bash de git accediendo a la carpeta de instalación de smartgit pero en mac habrá que acceder al interior del package .app de la aplicación.

De todas formas en esas dos plataformas también se puede acceder a instalar git desde la web http://git-scm.com/  y no hay ningún problema por instalarlo además de la herramienta git que incluye e instala smartgit.

La instalación de SmartGit no tiene ningún misterio. En el caso de Linux lo encontramos en varios formatos, package tar.gz o .deb.

Script de instalación para el formato tar.gz


#!/bin/bash
clear
AUTORIZADO="root"
if [ $USER != $AUTORIZADO ]; then
 echo "solo se puede ejecutar con permisos de root"
 exit 1
fi

#funcion principal
menu(){
 echo "========INSTALADOR SMARTGITHG========="
 echo "OPCIONES"
 echo "1.- Instalar SMARTGITHG"
 echo "2.- Desinstalar SMARTGITHG"
 echo "3.- Salir."
 echo "Introduzca una opción y pulse ENTER:"
 read opcion

case $opcion in
 1)
 clear
 install_sgit;;
 2)
 clear
 uninstall_sgit;;
 3)
 clear
 exit 1;;
 *)
 clear
 menu;;
 esac
}

uninstall_sgit(){
echo "Desinstalación de SMARTGITHG"
echo "Introduce tu nombre de usuario y pulsa enter:(no se permite el usuario root)"
read usuario

id $usuario 1> /dev/null 2>&1
ERROR=$?

# si el valor de error es igual a 0
# y el usuario introducido no es root
if [ $ERROR -eq 0 -a $usuario != "root" ]; then
 echo "El usuario $usuario es correcto"
 echo "Desinstalando..."
 su $usuario -c '/opt/smartgithg-5_0_5/bin/./remove-menuitem.sh'
 rm -rf /opt/smartgithg-5_0_5
 echo "SMARTGITHG desinstalado"
 echo "Pulse enter para volver al menu"
 read enter
 clear
 menu
else
 echo "el usuario no es correcto (no existe o es usuario root)"
 uninstall_sgit
fi

}

install_sgit(){
echo "Instalación de SMARTGITHG"
echo "Introduce tu nombre de usuario y pulsa enter:(no se permite el usuario root)"
read usuario

id $usuario 1> /dev/null 2>&1
ERROR=$?

# si el valor de error es igual a 0
# y el usuario introducido no es root
if [ $ERROR -eq 0 -a $usuario != "root" ]; then
 echo "El usuario $usuario es correcto"
 echo "Instalando..."
 tar xvfz smartgithg-generic-5_0_5.tar.gz -C /opt
 chown -R $usuario /opt/smartgithg-5_0_5
 chmod 775 -R /opt/smartgithg-5_0_5

su $usuario -c '/opt/smartgithg-5_0_5/bin/./add-menuitem.sh'
 echo "SMARTGITHG instalado"
 echo "Pulse enter para volver al menu"
 read enter
 clear
 menu
else
 echo "el usuario no es correcto (no existe o es usuario root)"
 install_sgit
fi

}

menu

CONFIGURACIÓN INICIAL DE SMARTGIT Y CREACIÓN DE REPOSITORIO

Al iniciar el programa aceptamos la licencia e indicamos que será para uso no comercial.

smartgit1

Los siguientes dos pasos son indicar la ruta del ejecutable de git en el sistema, esta ruta estará configurada por defecto, y el cliente SSH para conexión a repositorios, se puede dejar la opción por defecto.

smartgit2

smartgit3

El siguiente paso es configurar el acceso a nuestra cuenta de GitHub y poder facilitar el acceso a nuestros repositorios. En el cuadro de dialogo introducimos en Account el email o nombre de nuestra cuenta de github.com, el campo token es opcional ya que se autogenerará al introducir nuestra clave de acceso de github.com pulsando Generate API Token.

Al pulsar en generate API Token aparece una ventana llamada Master Password que sirve para indicar una contraseña maestra que proteja las demás contraseñas usadas en la autentificación en los servidores. Se puede marcar no usar una contraseña maestra.

smartgit4

smartgit5

A continuación se pide la contraseña de nuestra cuenta de github.com

smartgit6

También se puede configurar el acceso a nuestra cuenta de GitHub desde:

 Edit → Preferences

 Y dentro de Preferences dirigirse a la categoría “hosting providers” y seleccionamos Add…

Si el acceso es exitoso se muestra en la lista la cuenta configurada.

smartgit7

Comenzando a trabajar con un repositorio

 A partir de aquí tenemos dos vías:

  • Abrir un repositorio local previamente creado

  • Clonar un repositorio remoto

 Abrir repositorio local previamente creado

 Para crear el repositorio localmente nos posicionamos dentro del directorio donde se quiera controlar el proyecto

 cd ~/directorioproyecto

 Seguidamente para crear el nuevo repositorio localmente :

 git init

 Nos saldrá algo así:

 Initialized empty Git repository in /home/usuario/directorioproyecto/.git/

 desde smartgit en Project → Open Repository se selecciona el directorio y se indica un nombre al proyecto.

smartgit8

A partir de aquí para empezar a trabajar podemos añadir una serie de archivos al directorio de trabajo y podremos ver en smartgit como aparecen los archivos añadidos al directorio y se muestran con el estado Untracked. Para pasarlos al estado de seguimiento se usa la opción Stage

smartgit9

smartgit10

Al usar la opción stage los archivos añadidos pasarán al estado de Added, quedando preparados para una confirmación, además git empezará su seguimiento. En la pestaña Output se mostrará el historial de comandos y mensajes de salida.

smartgit11

smartgit12

Ahora pasemos a confirmar esos cambios (adición de archivos en nuestra carpeta), para ello usamos la opción Commit. Pero antes de hacer el primer commit también indicar que podemos configurar nuestros datos (nombre y email) que acompañarán a cada commit que hagamos. Para ello desde Project → Repository Settings se pueden configurar los datos.

smartgit13

Siguiendo con el Commit, la opción de hacer commit muestra una ventana donde podemos indicar el mensaje que acompañe a la confirmación. Después de hacer un commit se puede observar en la pestaña Branches la rama por defecto master. Con la primera confirmación se creará esta rama principal master apuntando a dicha confirmación. En cada confirmación de cambios que realicemos, la rama irá avanzando automáticamente. Y la rama master apuntará siempre a la última confirmación realizada.

smartgit14

smartgit15

Para poder trabajar con un repositorio remoto y sincronizar los cambios con nuestro repositorio local, es necesario primero crear un repositorio remoto. Para ello usaremos GitHub.

En nuestra cuenta de https://github.com/ , desde la pestaña Repositories podemos acceder a crear un nuevo repositorio en la opción New.

smartgit16

Lo siguiente será introducir el nombre del repositorio, la descripción aunque recomendable es opcional. El repositorio también se puede iniciar incluyendo opcionalmente un README, un tipo de .gitignore y un tipo licencia.

smartgit17

Una vez creado el repositorio se nos muestra la dirección del repositorio en dos formatos. Además se muestran los comandos de terminal para crear un repositorio local, hacer un commit, y como enviar al repositorio remoto los cambios.

smartgit18

Para poder enviar los cambios locales al servidor primero hay que añadir el repositorio Github remoto, para ello se usa la opción Pull y en la ventana que aparece seleccionar el servicio github e indicar el repositorio, podemos introducir la dirección del repositorio manualmente o seleccionarlo en la lista. Después de hacer Pull se nos muestra el comando de adición del servidor remoto:

smartgit19

Si el repositorio remoto ya tuviese algún commit o cambio realizado entonces Pull además de añadir el repositorio remoto también recuperaría y uniría automáticamente la rama de trabajo remota con tu rama de trabajo local.

Al repositorio remoto añadido se le pone el nombre por defecto “origin”, si se desea cambiar este nombre se puede hacer desde la opción Remote → Rename. Desde el menú Remote encontramos otras opciones para añadir más repositorios remotos o editar los remotos añadidos.

smartgit20

smartgit21

Seguidamente para enviar los cambios locales al servidor remoto, se usa la opción Push. Esta opción puede preguntar qué rama local se desea enviar al servidor remoto o si se desea enviar todas las ramas locales.

smartgit22

Si comprobamos el repositorio remoto de github podemos observar los cambios y archivos añadidos.

smartgit23

La opción Sync sirve para enviar al repositorio remoto los commits locales de la rama donde estemos trabajando y al mismo tiempo trae los cambios remotos.

Clonar repositorio remoto

Otra forma empezar a trabajar con un repositorio local y de forma remota sería, primeramente, creando un repositorio en github y seguidamente clonarlo desde smartgit.

Para ello dentro de smartgit selecciona Project → Clone… en la ventana que aparece seleccionamos el repositorio remoto previamente creado. Para ello podemos introducir la URL del repositorio o acceder a seleccionarlo desde el botón que hay a la derecha del campo URL. Este botón nos mostrará un listado con los repositorios de nuestra cuenta de github.

smartgit24

smartgit25

El paso denominado Selection se deja por defecto y el paso Local Directory se selecciona un directorio local donde clonar el repositorio remoto. Esto hará que se descargue en el directorio seleccionado lo mismo que tenemos en el servidor y permitirá empezar a trabajar el local para después subir los cambios al servidor.

EDITANDO ARCHIVOS EN REMOTO GITHUB.COM

En github.com cuando seleccionamos un archivo de nuestro repositorio se muestra su código. Podemos editarlo usando la opción edit.

smartgit26

Al pulsar en Edit tenemos la vista de código y la vista Preview. La vista Preview muestra resaltados los cambios que hemos realizado en el archivo.

smartgit27

smartgit28

En la parte inferior tenemos unos campos donde indicar el mensaje que acompañará a un commit de los cambios realizados.

smartgit29

Para reflejar estos cambios en el repositorio local se usa la opción Pull. Después de realizar un Pull podremos comprobar los commits y cambios tanto local como remoto, usando la opción Log.

Desde esta ventana podremos ver los detalles de los cambios que hemos traído del servidor.

smartgit30

REALIZANDO CAMBIOS EN EL REPOSITORIO LOCAL

Cuando editamos los archivos de nuestro repositorio local automáticamente aparecen en la lista con el estado Modified.

smartgit31 smartgit32

smartgit33

En la misma ventana si seleccionamos el archivo modificado se nos muestran los cambios introducidos. Las zonas verdes indican lo añadido y la parte roja significa que una línea se ha modificado. Esta vista tiene dos versiones de visualización de los cambios. Una muestra los cambios entre lo que hay en la zona de preparación/index (staged state) y el archivo local (working tree) , y la otra muestra las diferencias entre lo que hay en la zona de preparación/index (staged state) y lo que hay ya confirmado en el repositorio/HEAD (repository state).

Smartgit denomina a la zona de preparación (staging area) con el nombre de Index, al directorio de trabajo como Working tree y a la zona de confirmaciones del repositorio como HEAD que sería el apuntador a la rama local en la que tú estés en ese momento. En este caso, en la rama master.

smartgit34

Para pasar los cambios del directorio de trabajo a la zona de preparación (Index) se seleccionan los archivos de la lista y se usa la opción Stage. También se puede revertir esto, dejando fuera de la zona de preparación, usando la opción Unstage.

También se pueden preparar líneas específicas de un archivo y dejar otras sin preparar. Para ello se usan los signos << para preparar y >> para extraer de la zona de preparación.

Pulsando en la opción Index Editor se pueden ver las 3 áreas para la preparación y confirmación de cambios.

smartgit35

Una vez que se han preparado los cambios se pueden confirmar con la opción commit

smartgit36

smartgit37

En la ventana de Commit se puede especificar un mensaje o elegir uno del historial de commits con la opción Select from log… . Además se puede hacer commit local y subir los cambios al repositorio remoto con Commit & Push.

Aparte de las opciones de preparación de cambios también encontramos otras opciones.

smartgit38

La opción Remove sirve para eliminar el archivo del repositorio, con lo cual dejará de estar en seguimiento cuando hagamos cambios en él. Podemos indicar de manera opcional que se elimine el archivo del directorio de trabajo.

Después de usar la opción remove y seguidamente un commit, el archivo quitado del seguimiento se mostrará como Untracked. Para volver añadir el archivo al repositorio se prepara con la opción Stage y se confirma con Commit.

smartgit39

smartgit40

La opción Discard sirve para descartar todos los cambios realizados en los archivos seleccionados. Esta opción hace que los archivos seleccionados vuelvan al estado que se encontraban en el último commit del repositorio o la zona de preparación, en el caso que se hayan preparado ya algunos cambios. Si hubiera cambios preparados se tiene en cuenta la versión que hay en la zona de preparación. Discard solo descarta cambios en la zona Working tree.

smartgit41

Muchas veces nos podemos encontrar con que hemos preparado(Stage) unos cambios y sin hacer una confirmación(commit) hemos vuelto a hacer nuevos cambios en el archivo, pero estos últimos sin preparar. En estos casos el estado del archivo será Staged Modified. En estos casos la opción Discard nos dejaría elegir entre volver a la versión de la zona Index(staged) o HEAD(repository). Si no hubiese ninguna versión preparada el archivo se dejaría igual a la versión que hay en el repositorio, en el último commit de la rama donde nos encontremos.

smartgit42

smartgit43

La opción Delete borra el archivo del directorio de trabajo. Después de borrarlo su estado figura como “missing”. Para quitar también su seguimiento es conveniente prepararlo(Stage) y confirmar con commit ese cambio para que no figure en el repositorio. Para ello se puede usar la opción remove o Stage seguido de un commit.

smartgit44

Después de hacer un remove o stage el archivo figura como Removed. Y después de hacer commit el archivo deja de aparecer en la lista.

smartgit45

También disponemos de las opciones de visualización de archivos, marcando o desmarcando estas opciones podremos, por ejemplo, mostrar/ocultar los archivos que no han tenido cambios.

smartgit46

SOLUCIONANDO CONFLICTOS EN CAMBIOS

Si estamos trabajando conjuntamente con otros es recomendable que al empezar a trabajar con los archivos se haga uso de la opción Pull para traer primero los cambios que otros hubieran realizado y después se trabaje en los archivos.

Puede suceder que a la hora de subir nuestros cambios al repositorio remoto otros colaboradores ya hubiesen subido sus cambios, siendo estos en las mismas lineas que hemos editado nosotros.

Lo primero es hacer Pull para traer los cambios remotos. Esto hará que donde se produzcan conflictos aparezcan unas marcas para que las editemos nosotros manualmente.

Ejemplo

<<<<<<< Updated upstream → apertura

linea 3 remote → repositorio remoto

======= → separador

linea 3 local → directorio local de trabajo

>>>>>>> Stashed changes → cierre

Lo que hay por encima de la marca ====== es la versión que hay confirmada en el repositorio remoto y lo que hay por debajo de esa marca es el cambio que nosotros hemos realizado. Tendremos que editar el archivo y decidir que cambio dejamos. La edición es muy sencilla, simplemente desde un editor externo se quitan las marcas y se deja la modificación que se desee.

La siguiente imagen muestra lo que indica smartgit ante el conflicto y antes de editar.

smartgit47

La siguiente imagen muestra lo que indica smartgit después de editar y elegir qué modificación es la elegida.

smartgit48

Una vez resueltos los conflictos se preparan los cambios y se confirman con la opción Staged y Commit.

En otro post hablaré sobre la ventana Log y cómo trabajar con ramas haciendo uso de esta herramienta.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s