-
Notifications
You must be signed in to change notification settings - Fork 7
Git: Bitbucket y GitHub desde la trinchera
Para instalar GIT, lo primero que tienes que hacer es descargar desde el sitio oficial:
#### Pagina Oficial GIT
Sección "Downloads" y seleccionamos nuestro sistema operativo (SO), aunque el sitio oficial detecta el SO y la versión indicada, pero esto no siempre funciona.
En este momento estas instalando GIT para trabajar en consola, NO estamos instalando los clientes el cual incluyen interfaces de usuario amigables para gestionar los proyectos, la única diferencia en la experiencia es que solucionar problemas no es tan factible como en la consola.
Para trabajar con los clientes de GIT (cliente Github, cliente Bitbucket), cada sitio oficial cuenta con su propio GUI, ahí ustedes pueden descargar los clientes; ¡pero! para una mejor gestión de su código es recomendable la terminal.
Linus Torvalds bromea sobre el nombre de "Git", porque en el argot del Inglés británico se utiliza para referirse a una persona estúpida o desagradable.
Chris Wanstrath, co-foundador y CEO de GitHub. en un articulo para Forbes dice:
"Git es diferente. Es un VCS Distribuido, lo que significa que no necesita un servidor. Puede obtener el código de un amigo en una cafetería a través de WiFi. Los servidores son opcionales. Todo el mundo tiene la capacidad de compartir código con cualquier otra persona usando Git".
### Terminología Git Términos importantes al trabajar con GIT:
- Repositorio: Las diferentes versiones en el tiempo.
- Commit: Confirmar cambios sobre el código.
- Branch: Línea de código por separado con su propia historia.
- Master: Rama principal por default.
- Revision: Representa una versión del código fuente.
- Diff: Como si fuese un Delta, Sólo Cambios.
- Checkout: Crear una copia local del repositorio.
- Tag: Apunta a cierto espacio especifico en el tiempo en una rama.
Para confirmar que GIT esté totalmente listo para trabajar, abrimos la terminal o consola y ejecutar el siguiente comando:
$git --version
git 2.10.2
Configurando y personalizando GIT
Una vez instalado, debemos configurar GIT.
¿Por qué configurar? debemos decirle con qué nombre y correo vas a utilizar GIT, lo cual indica que vamos estar trabajando con un "nombre" y un correo el cual indicara quien hizo un commit y cual es el doliente:
# Configure el usuario que se utilizará por git
# Claro utilice su nombre
git config --global user.name "Su Nombre y Apellido - usuario github o bitbucket"
# Luego el correo electrónico
git config --global user.email "usuario@correo.com"
#verificando configuración
git config --list
Generalmente es necesario omitir algunos archivos e incluso carpetas completas Git tiene dos formas:
# A través del archivo .gitignore ubicado en la raíz del proyecto
vim .gitignore # Sistemas operativos en base POSIX
----------
bin
*pyc
----------
# A través del directorio .git en la ruta .git/info/exclude
vim .git/info/exclude
----------
bin
*pyc
----------
Pueden generar los .gitignore
con herramientas en linea como gitignore.io
Creando contenido e interactuando con Git
#en mis Documentos creamos la carpeta prueba
mkdir prueba
# Entrando a prueba
cd prueba
# Creando un nuevo directorio
mkdir archivos
# creando algunos archivos
touch archivo1
touch archivo2
touch archivos/data.txt
# Ahora escribimos algún texto en archivo1
ls >archivo1
Creando repositorio, usaremos "add" y "commit"
# Inicializar un repositorio en Git
git init
# con add adjuntamos todos los archivos que encuentre en el repositorio Git
git add .
# Haciendo commit de los archivos en el repositorio locas
git commit -m "Initial commit"
# Verificando con el Log de eventos de Git
git log
Resultado interesante
prueba alejo8591$ git log
commit 65c96a60cb8e7d27f1c4847b84446429a31d425a
Author: Alejandro Romero <alejo8591@gmail.com>
Date: Wed May 16 17:26:23 2012 -0500
initial commit
Comparando archivos por medio de diff
# modificando archivos
echo "creando novedad" > archivo01
echo "Otra novedad sobre los archivos" > archivo02
# Verificando cambios con el comando diff
git diff
# Commit de los cambios, -a carga los archivos modificados
# cuidado pues no adiciona los nuevos archivos por defecto
git commit -a -m "Algunos cambios"
Resultado de la comparación archivos por medio de diff
prueba alejo8591$ git diff
diff --git a/archivo1 b/archivo1
index 4365ca9..3ade87d 100644
--- a/archivo1
+++ b/archivo1
@@ -1,3 +1 @@
-archivo1
-archivo2
-archivos
+creando novedad
#Corrigiendo mensaje de un commit
git commit --amend -m "actualizando mensaje"
Eliminando archivos
# Creando un archivo
touch eliminado.txt
git add . && git commit -m "actualizando repositorio con eliminado.txt"
# Eliminando archivo
rm eliminado.txt
# Pero de la forma estándar no funciona no actualiza el archivo eliminado en el repositorio
git add . && git commit -m "a new file has been created"
# de nuevo es necesario usar la opción "-a"
git commit -a -m "se elimino el archivo eliminado.txt"
# Pero en la vida real se hace así
git add -A .
git commit -m "se elimino el archivo eliminado.txt"
Trabajando con Servidores Remotos en GIT generalmente se hace con acceso Secure Shell (SSH), pero existen cuatro (4) formas de acceder.
- Protocolo Local El repositorio remoto es simplemente otra carpeta en el disco.
- Protocolo SSH Ss el único protocolo de red con el que puedes facilmente leer y escribir
- Protocolo Git Similar al protocolo SSH; pero sin ningún tipo de autentificación, es un daemon especial, que escucha por un puerto dedicado (9418)
- Protocolo HTTP/S Basta con situar el repositorio Git bajo la raiz de los documentos HTTP y preparar el enganche (hook) 'post-update' adecuado.
# Comprobar si hay un directorio llamado ".ssh" en su directorio de usuario
cd ~/.ssh
# verificar si existen archivos key ya creados
ls
config id_rsa id_rsa.pub known_hosts
# Si existen cree un backup de ellos, por si los necesita en el futuro, sino puede omitir estos pasos
mkdir key_backup
# Copiando todos los archivos referentes a keys en "key_backup"
cp id_rsa* key_backup
# Despues de copiado lo borramos para generarlo
rm id_rsa*
#### Creando Keys SSH para servidores Remotos (II)
# Creando una nueva key con encriptación RSA
ssh-keygen -t rsa -C "your_email@youremail.com"
# Le saldra el siguiente mensaje
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Presione enter]
Enter passphrase (empty for no passphrase): [contraseña]
Enter same passphrase again: [Verificando contraseña]
# Luego debe salir el siguiente mensaje
Your identification has been saved in /Users/you/.ssh/id_rsa.
Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@youremail.com
# Por ultimo copiamos el contenido de la id_rsa.pub en el portapapeles del S.O.
pbcopy < ~/.ssh/id_rsa.pub
## Branching
Que significa? Cuando se ha tomado la rama principal de desarrollo (master) y a partir de ahí has continuado trabajando sin seguir y alterar la rama principal de desarrollo.
Se asume la siguiente situación, de nuestro repositorio
Creando Rama llamada "bug"
# Creando una rama con el comando checkout
git checkout -b bug
Switched to a new branch "bug"
# Otra Opción puede ser
git branch bug
git checkout bug
Trabajando en la Rama llamada "bug"
# Creando una rama con el comando checkout
# Modificando el archivo1 con "solución del Bug"
echo "Solucinando Bug" > archivo1
# Cargando al estado staging area
git add archivo1
# Listo para enviar al repositorio remoto
git commit -a -m 'Solucionando Bug en nueva Rama'
# Enviando a nuestro servidor del repositorio
git push origin master
Merge de la Rama llamada "bug" y "master"
# Volviendo a la rama "master"
git checkout master
Switched to branch 'master'
# Haciendo merge en de "bug" en "master"
git merge bug
# Debe presentar la siguiente info
Updating HASH
Fast-Forward
archivo1 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
# Verificar ramas creadas
$ git branch
bug
* master
# última confirmación de cambios en cada rama
$ git branch -v
# ramas que han sido fusionadas en la rama activa
$ git branch --merged
# ramas que contienen trabajos sin fusionar aún
$ git branch --no-merged
# Eliminar rama
git branch -d testing