2. ¿Qué es GIT?
• SW de control de versiones.
• Empezó en 2005.
• Creado por Linus Torvalds.
5. El flujo de trabajo básico en Git es algo
así:
1. Modificas una serie de archivos en tu directorio de trabajo.
2. Preparas los archivos, añadiéndolos a tu área de preparación.
3. Confirmas los cambios, lo que toma los archivos tal y como están en el
área de preparación, y almacena esas instantáneas de manera permanente
en tu directorio de Git.
6. Recordar:
Si una versión concreta de un archivo está en el directorio
de Git, se considera confirmada (committed).
Si ha sufrido cambios desde que se obtuvo del repositorio,
pero ha sido añadida al área de preparación, está
preparada (staged).
Y si ha sufrido cambios desde que se obtuvo del
repositorio, pero no se ha preparado, está modificada
(modified).
9. $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext
libz-dev
Compilar e instalar
$ tar -zxf git-1.6.0.5.tar.gz
$ cd git-1.6.0.5
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
$ apt-get install git
10. Configurando GIT por primera vez
$ git config --global user.name "Francisco Escandon"
$ git config --global user.email francisco@enova.mx
Tu editor
Tu configuración
$ git config --global core.editor emacs
Comprobando tu configuración
$ git config --list
user.name=Francisco Escandon
user.email=francisco@enova.mx
color.diff=auto
...
11. Obteniendo Ayuda
$ git help <comando>
$ git <comando> --help
$ man git-<comando>
Por ejemplo, puedes ver la página del manual para el comando config
ejecutando:
$ git help config
12. Obteniendo un repositorio GIT
Inicializando un repositorio en un directorio existente
$ git init
Clonando un repositorio existente
$ git clone http://10.250.0.6/enovadevelopers/capacitacion-git.git
$ git clone git@10.250.0.6:enovadevelopers/capacitacion-git.git dir
13. Recordar
Cada archivo de tu directorio de trabajo puede estar en uno de estos dos estados:
bajo seguimiento (tracked), o sin seguimiento (untracked).
Los archivos bajo seguimiento son aquellos que existían en la última instantánea;
pueden estar sin modificaciones, modificados, o preparados.
Los archivos sin seguimiento son todos los demás —cualquier archivo de tu
directorio que no estuviese en tu última instantánea ni está en tu área de
preparación—.
La primera vez que clonas un repositorio, todos tus archivos estarán bajo
seguimiento y sin modificaciones, ya que los acabas de copiar y no has modificado
nada.
15. $ git status
# On branch master
nothing to commit (working directory clean)
Comprobando el estado de tus archivos
$ git status
En la rama master
Your branch is up-to-date with 'origin/master'.
Archivos sin seguimiento:
(use «git add <archivo>...» para incluir lo que se ha de
ejecutar)
programa2.php
no se ha agregado nada al commit pero existen archivos sin
seguimiento (use «git add» para darle seguimiento)
Si agregamos un archivo (programa2.php)
16. Seguimiento de nuevos archivos
$ git add programa2.php
Seguimiento de nuevos archivos
$ git add programa2.php
$ git status
En la rama master
Your branch is up-to-date with 'origin/master'.
Cambios para hacer commit:
(use «git reset HEAD <archivo>...«para eliminar
stage)
new file: programa2.php
17. Ignorando archivos
$ cat .gitignore
*.[oa]
*~
Confirmando tus cambios
Cualquier cosa que todavía esté sin preparar —cualquier archivo que hayas creado
o modificado, y sobre el que no hayas ejecutado git add desde su última edición—
no se incluirá en esta confirmación.
$ git commit
$ git commit -m "Se añade el programa2.php que ... "
[master fd017e4] Se añade el programa2.php al repositorio
1 file changed, 5 insertions(+)
create mode 100644 programa2.php
18. Saltándote el área de preparación
Si quieres saltarte el área de preparación, Git proporciona un atajo. Pasar la
opción -a al comando git commit hace que Git prepare todo archivo que
estuviese en seguimiento antes de la confirmación, permitiéndote obviar toda la
parte de git add
$ git commit -a -m 'ae agregan cambios de ...'
[master 83e38c7] added new benchmarks
1 files changed, 5 insertions(+), 0
deletions(-)
19. Eliminando archivos
Para eliminar un archivo de Git, debes eliminarlo de tus archivos bajo seguimiento
o de tu área de preparación y después confirmar.
$ rm programa2.php
$ git status
# On branch master
#
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
#
# deleted: programa2.php
#
$ git rm programa2.php
rm 'programa2.php'
$ git status
# On branch master
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: programa2.php
#
20. Viendo el histórico de confirmaciones (git log)
$ git log
commit fd017e49af8429fb20711ce67f0bdfa53640e8a5
Author: euler.sanchez <euler.sanchez@enova.mx>
Date: Mon Apr 28 15:07:41 2014 -0500
Se añade el programa2.php al repositorio
commit 343a08c7a7a346eb9b5b8972deb3470b0ed90ae1
Author: victor.barrientos <victor.barrientos@enova.mx>
Date: Tue Apr 22 15:44:18 2014 -0500
Se agrego un echo
commit 56abe6f29fb6c2097880d329f1d840bddd1a3167
Author: euler.sanchez <euler.sanchez@enova.mx>
Date: Tue Apr 22 15:15:41 2014 -0500
Calcula el factorial de 5
commit 1acc24637f1c943e45259e680690ef583ec31b50
Author: euler.sanchez <euler.sanchez@enova.mx>
Date: Tue Apr 22 14:32:21 2014 -0500
First commit
21. Trabajando con repositorios remotos
Colaborar con otros implica gestionar estos repositorios remotos, y mandar
(push) y recibir (pull) datos de ellos cuando necesites compartir cosas.
$ git remote -v
originhttp://10.250.0.6/enovadevelopers/capacitacion-
git.git
Creando repositorios
mkdir test
cd test
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@10.250.0.6:enovadevelopers/test.git
git push -u origin master
22. $ git push origin master
Username for 'http://10.250.0.6': euler.sanchez
Password for 'http://euler.sanchez@10.250.0.6':
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 371 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://10.250.0.6/enovadevelopers/capacitacion-git.git
343a08c..fd017e4 master -> master
23. ¿Qué es una rama?
$ git add README test.rb LICENSE
$ git commit -m 'initial commit of my project'
Vamos a suponer, por ejemplo, que tienes una carpeta con tres archivos, que
preparas (stage) todos ellos y los confirmas (commit).
24. Si haces más cambios y vuelves a confirmar, la siguiente confirmación guardará un
apuntador a esta su confirmación precedente.
Una rama Git es simplemente un apuntador móvil apuntando a una de esas
confirmaciones. La rama por defecto de Git es la rama 'master'.
25. 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.
Si quieres crear una nueva rama denominada "testing". Usarás el comando 'git
branch'
$ git branch testing
26. ¿Cómo sabe Git en qué rama estás en este momento?
R = Mediante el apuntador HEAD
Recordar: El comando git branch solamente crea una nueva rama, y no salta a dicha
rama.
27. $ git checkout testing
Para saltar de una rama a otra se utiliza git checkout. Esto mueve el apuntador
HEAD a la rama 'testing'
28. Si ahora ejecutamos lo siguiente:
$ vim programa3.php
$ git commit -a -m 'Se hace un cambio'
29. La rama 'testing' avanza, mientras que la rama 'master' permanece en la
confirmación donde estaba cuando lanzaste el comando 'git checkout' para saltar.
$ git checkout master
30. Mueve el apuntador HEAD de nuevo a la rama 'master', y revierte los archivos de
tu directorio de trabajo; dejándolos tal y como estaban en la última instantánea
confirmada en dicha rama 'master'.
31. GITLAB esta instalado en 10.250.0.6
Usuarios: francisco.escandon
Password: 123456789
32. GitLab is used in more than 100,000 organizations
https://www.gitlab.com/