GIT es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando estas tienen un gran número de archivos de código fuente.
Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Una versión, revisión o edición de un producto, es el estado en el que se encuentra el mismo en un momento dado de su desarrollo o modificación.
El repositorio es el lugar en el que se almacenan los datos actualizados e históricos de cambios, a menudo en un servidor. A veces se le denomina depósito o depot. Puede ser un sistema de archivos en un disco duro, un banco de datos, etc.
Permite inicializar un repositorio local de código, i.e. sólo va a estar en tu máquina. Puede ser utilizado para crear un nuevo repositorio o migrar uno existente desde otro control de versiones.
Va a crear un directorio llamado .git que va a contener todos los metadatos necesarios para la gestión del proyecto. El directorio .git sólo va existir dentro de la raíz del proyecto.
Permite clonar un repositorio de código existente para que sea trabajado de forma local. La clonación puede ser desde la misma máquina o desde una máquina remota. Si es una clonación remota, esta es hecha a través de dos protocolos:
- http
- Protocolo de transferencia de hypertexto
- ssh
- Secure Shell
Forma de uso:
git clone https://github.com/ratrabbit/ProyectoIS-1.git
git clone [email protected]:ratrabbit/ProyectoIS-1.git
Mientras trabajamos en un repositorio git, los archivos tienen un ciclo de vida que siempre siguen en git.
La principal herramienta para determinar que archivos están en que estado, es a través de git status. Si ejecutas este comando justo después de clonar un repositorio, debería de verse algo como:
$ git status
On branch master
nothing to commit, working directory clean
Si modificamos alguno de los archivos que están dentro del repositorio, al ejecutar el comando de git status, la salida debería de verse algo como lo siguiente:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# README
nothing added to commit but untracked files present (use "git add" to track)
Para iniciar el seguimiento de los cambios de un archivo dentro de git, vamos a hacer uso del comando git add. Por ejemplo:
git add README
Podemos darnos cuenta de que se ejecutó correctamente el comando si hacemos un git status
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: README
#
- Nota
- puedes agregar múltiples archivos a git add
Una vez que ya agregamos archivos para darles seguimiento, cada vez que hagamos una modificación y queramos hacer registro de dichos cambios, hay que usar el comando git commit.
git add README
git commit
Al ejecutar el comando git commit, abrirá tu editor de texto favorito para editar el mensaje del cambio registrado. En caso de que no quieras hacerlo a partir del editor, puedes utilizar la bandera -m
git commit -m "Mi mensaje"
Cuando uno trabaja con un repositorio de código, hay ocasiones que necesitamos ignorar archivos que no nos son útiles en nuestros proyectos. Para hacer esto existe un archivo llamado .gitignore donde puedes definir las extensiones que no quieres utilizar.
$ cat .gitignore
*.[oa]
*~
Usando git diff puedes ver las diferencias de tus cambios que no has confirmado. Ejemplo:
$ git diff
diff --git a/benchmarks.rb b/benchmarks.rb
index 3cb747f..da65585 100644
--- a/benchmarks.rb
+++ b/benchmarks.rb
@@ -36,6 +36,10 @@ def main
@commit.parents[0].parents[0].parents[0]
end
+ run_code(x, 'commits 1') do
+ git.commits.size
+ end
+
run_code(x, 'commits 2') do
log = git.commits('master', 15)
log.size
Para eliminar un archivo del seguimiento de git, debes de utilizar la herramienta git rm y después confirmar los cambios.
$ git rm README
$ git commit
Para ver el historial de los cambios que has realizado, git provee una herramienta que te ayuda a visualizar esos cambios. Esta herramienta es git log.
- git log
Una de las opciones más útiles es -p, que muestra las diferencias introducidas en cada confirmación. También puedes usar la opción -2, que hace que se muestren únicamente las dos últimas entradas del histórico:
- git log -p 2
Git log trae además múltiples banderas para poder generar la visualización del histórico a tu gusto, por ejemplo podemos ver el siguiente comando.
- git log --graph --decorate --pretty=oneline --abbrev-commit
- -p
- Muestra el parche introducido en cada confirmación.
- –word-diff
- Muestra el parche en formato de una palabra.
- –stat
- Muestra estadísticas sobre los archivos modificados en cada confirmación.
- –shortstat
- Muestra solamente la línea de resumen de la opción –stat.
- –name-only
- Muestra la lista de archivos afectados.
- –name-status
- Muestra la lista de archivos afectados, indicando además si fueron añadidos, modificados o eliminados.
- –abbrev-commit
- Muestra solamente los primeros caracteres de la suma SHA-1, en vez de los 40 caracteres de que se compone.
- –relative-date
- Muestra la fecha en formato relativo (por ejemplo , “2 weeks ago” (“hace 2 semanas”)) en lugar del formato completo.
- –graph
- Muestra un gráfico ASCII con la historia de ramificaciones y uniones.
- –pretty
- Muestra las confirmaciones usando un formato alternativo. Posibles opciones son oneline, short, full, fuller y format (mediante el cual puedes especificar tu propio formato).
- –oneline cómodo acortamiento de la opción –pretty=oneline –abbrev-commit.
- Crear un repositorio en github
- Crear un repositorio local
- Agregar un README al repositorio local
- Enlazar el repositorio local al de github
- Subir en una confirmación (commit) la tarea de ayer
- Subir en una confirmación (commit) un archivo explicando los comandos que usaron para resolver esta tarea.