Este tutorial fue hecho para campus party 2012 Bogota, estan libres de copiarlo y usarlo
esta acompañado de slides si quieren:
Verlas: http://bit.ly/gitCOP5
Copiarlas o Editarlas: http://bit.ly/github-COP5-edit
Primero inicializar el repositorio con git init tambien se puede inicializar una carpeta ya existente ej
$ cd nombreRepositorio
nombreRepositorio/$ git init
Para poder ver que configuraciones tenemos usamos git config ej. el editor de commits o el nombre de usuario
$ cd nombreRepositorio
nombreRepositorio/$ git config -l
-l lista todas las configuraciones
$ git config --global user.name "Su Nombre"
$ git config --global user.email "Su Correo"
$ git config --global core.editor "Su Editor ej. notepad"
Esto se hace para configurar la instalacion/repositorio
Para poder agregar algo a un commit hay que crearlo y luego agregarlo con git add
$ vim README.md
-- hacer algo alli --
$ git add README.md
tambien se puede usar git add -A para agregar a un commit todos los cambios USAR CON PRECAUCION
Hacer un commit (comprometerse con un cambio :P) luego de agregar los cambios a un commit se hace usando git commit
$ git commit
-m se puede usar para enviar en el commit el mensaje directamente ej. git commit -m "Primer Commit" USAR CON PRECAUCION
Permite visualizar si hay archivos que tienen ambios que pendientes de hacer commit/sobreescribir
$ git status
El commando git diff permite ver a detalle cuales son los cambios que estan pendientes, con -- muestra los archivos como se encuentran en el repositorio y con ++ los archivos como estan actualmente
Con el commando git checkout <nombreArchivo/Ficher> reemplazo mis cambios locales por los cambios que se encuentran en el repositorio, adicionalmente me permite cambiar entre ramas (ver adelante)
git log muestra el log de los commits que se han realizado, incluyendo el mensaje, el autor, y la fecha
Con git rm o git mv se pueden eliminar o mover archivos o ficheros que se encuentran en el repositorio
Una rama es un nuevo camino del codigo que debe ser manejado pero que no esta listo para ser incluido en el master del repositorio, (la rama master es la rama por defecto en git)
las ramas se usan por ejemplo para manejar nuevas funcionalidades
git branch sin argumentos lista la ramas disponibles y con un asterisco la actual git branch -v Lista las ramas y muestra el ultimo commit en cada una git branch crea una rama para trabajar git branch checkout cambia la rama de trabajo a la rama seleccionada git branch checkout master vuelve a la rama principal (trunk?) git branch -D elimina la rama
Todos los commits que se realizen estando trabajando en una rama quedan en la rama y se puede cambiar entre ramas sin que los cambios realizados en una u otra se vean reflejados antes de hacer una mezcla (ver adelante)
Luego de tener los cambios en una rama y estar seguros de estos hay que realizar una mezcla existen diferentes estrategias para mezclar ej.
branch->master
master->branch
branch->branch
(branch<->branch)->branch
El commando git merge nos permite hacer todo este tipo de mezclas, sin embargo solo vamos a ver la mas basica, luego de realizar los cambios en nuestra rama:
$ git checkout master # pasamos al master
$ git merge <nombreRama> # mezclamos la rama en nuestro master
Si existen conflictos git nos mostrara los archivos donde se presentaron para que sean resueltos manualmente
Cuando estamos seguros de una version de nuestro codigo y queremos marcarla como segura / estable podemos crear un tag con git tag para que quede una copia del repositorio en ese momento, para listar los tags lo hacemos con git tag -l y para ver especificamente que tiene un tag lo hacemos con git show
Algunos archivos no queremos que sean controlados o guardar copias de estos en el repositorio por ejemplo .class / .pyc / .py~ etc, para esto creamos un archivo .gitignore que contiene mediante expresiones regulares los archivos y tipos de archivos que no queremos controlar
Un repositorio de git esta listo para ser compartido desde el primero momento, para hacer una copia de un repositorio se debe usar git clone
Antes de poder compartir nuestro codigo o colaborar con otros repositorios debemos identificarnos de una forma que garantize nuestra autenticidad, para esto se usa la generacion de llaves SSH
$ ssh-keygen
Esto nos genera una llave publica y una llave privada, debemos entregarle la llave publica a la persona que queremos que confie en nuestro codigo (ej. github)
Para poder conectarnos con un repositorio fuera del que tenemos tenemos tenemos que agregar un repositorio remoto con el commando git remote add se puede usar git remote rm para borrarlo
Luego de estar conectados a un repositorio podemos empujar al repositorio remoto los cambios que tenemos en nuestro repositorio local mediante git push por defecto git intenta empujar al remoto origin y a la rama master
Al igual que podemos empujar nuestros cambios a un repositorio remoto podemos jalar cambios de un repositorio remoto a nuestro repositorio local bien sea a nuestro carpeta de trabajo (pull) o a la copia de nuestro repositorio (fetch) usando los comandos
git pull git fetch
Un fork no es un concepto de Git, es mas una conveniencia social, donde se hace el clone de un repositorio bajo un nombre propio, como git genera una copia del repositorio a traves de un clone, podemos trabajarlo como un