Comandos y Utilidades en Git

1 Mar

Por estos días DaPa y yo hemos estado retomando proyectos y trabajando algunos otros como freelanceros, por lo que hemos aprovechado nuestra instalación de Redmine y Git para hacer manejo de versiones; nos gusta manipular los cambios del repositorio desde la línea de comandos aunque ya contamos con una excelente interfaz para Git como lo es gitg y smartgit (que también está para Mac y es esta la última adquisición de mi gran amigo DaPa).

Esta publicación solo pretende ser una referencia a los comandos que día tras día y noche tras noche (porque se trabaja a cualquier hora), utilizaremos en pro de llevar a feliz término cada uno de nuestros proyectos con la menor pérdida de información en el proceso (A los que hayan perdido un fichero ya programado saben de qué hablamos), por lo que es susceptible a cambios cada vez que encontremos alguna otra cosa que anotar sobre Git.

Creando Repositorios

La forma en la que creamos los repositorios depende de cómo nosotros configuramos Redmine para que vea dicho repositorio:

null   
git init
git config --bool core.bare true

Repositorio Remoto

Cuando nos unimos a un proyecto, lo primero que hacemos es clonar dicho proyecto:

null   
git clone protocolo://[usuario[:clave]@]ip-git/camino/repo repo

Si no se ha hecho con anterioridad, podemos configurar el usuario que realizará los cambios en git:

null   
git config --global user.name "Christian Gutierrez"
git config --global user.email "chesstrian@gmail.com"

Como mencionamos, solo es necesario hacer esto la primera vez dado que usamos –global, esto crea o modifica el archivo ~/.gitconfig con los siguientes valores:

null   
[user]
        name = Christian Gutierrez
        email = chesstrian@gmail.com

Si no usamos –global, tendremos que configurar cada nuevo proyecto si es que vamos a realizar actualizaciones, de lo contrario no es necesario. Si no somos los únicos trabajando en el proyecto, es una buena idea traer los cambios que hayan llevado a cabo los otros programadores:

null   
git fetch # Traer los cambios remotos sin actualizar localmente
git diff local remoto

Para actualizar nuestro repositorio, después de mirar los cambios procederíamos:

null   
git merge remoto

Lo anterior se puede llevar a cabo con:

null   
git pull

Actualizaremos nuestro repositorio local a partir del repositorio remoto confiados en el excelente trabajo de nuestro compañeros.

Cuando llevamos a cabo cambios en el proyecto, actualizamos de la siguiente forma:

null   
git add . # Puede ser archivo1 [archivo2 [archivo3 ...]]
git commit -m "Comentarios."
git push [origin branch] # Actualiza el repositorio remoto

Con add agregamos los archivos que hayamos cambiado o agregado, utilizar “.” quiere decir que agregamos todos los cambios, incluido si hacemos:

null   
git rm archivo # Borrar un archivo
git mv archivo archivo.php # Renombrar archivo

Al hacer commits con comentarios vacíos, dicho commit se aborta; cuando usamos la utilidad en línea de comandos, sucede que nuestros comentarios quedan en una sola línea, para solucionar esto escribimos:

null   
git config core.editor "vim"

Obviamente puedes usar el editor que más te agrade; este comando agrega la entrada “editor = vim” en la sección [core] del archivo ~/.gitconfig. Para escribir los comentarios procederíamos así:

null   
git commit # Un nuevo commit, esto abre el editor
git commit --amend # Para cambiar los comentarios de un commit antes de hacer push

Para que se reconozcan los saltos de línea en los comentarios incluidos en el commit, es necesario dejar una línea entre los textos.

Manejo de Ramas (branch)

Si creamos un repositorio por primera vez, Git crea automaticamente una rama llamada “master”:

null   
git branch # Muestra las ramas locales mostrando con * en la que nos encontremos actualmente
git status

Para crear una nueva rama:

null   
git branch nueva_rama

Esto crea la rama pero no nos pasa a esa nueva rama. Para cambiarnos es necesario que no hayan cambios por subir a la rama en la que nos encontremos:

null   
git checkout nueva_rama
Después que estamos sobre una nueva rama y queremos hacer cambios en el servidor por medio de push, la primera vez debemos escribir:
null   
git push origin nueva_rama # Usar solo en el primer push
git push # Usar el resto de veces

Cuando una rama ya no es necesaria podemos borrarla:

null   
git branch -d nueva_rama

Si queremos crear una nueva rama y ubicarnos en ella inmediatamente sería:

null   
git checkout -b nueva_rama

Devolviendo Cambios

Si necesitamos deshacer los cambios realizados por un commit local y/o remoto usaríamos:

null   
git reset --hard HEAD~1 # Local
git push origin +nueva_rama # Remoto

Para ser sinceros, estamos comenzando con Git y lo mostrado es lo que básicamente hemos necesitado, por lo que esperamos actualizar  esta referencia bastante pronto.

Enlaces:

http://www.blog.sergiorus.com/post/968247237/git-sistema-de-control-de-versiones-distribuido
http://codaset.com/edy/git-document-vault/wiki/GIT—Tareas-comunes-en-linea-de-comandos
http://es.w3support.net/index.php?db=so&id=60278

Sugeridos:

http://progit.org/book/
http://book.git-scm.com/

Acerca del autor

Christian Gutierrez ha escrito 22 publicaciones en este blog.

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why. – Anonymous Developer

4 Comentarios a “Comandos y Utilidades en Git”