SlideShare una empresa de Scribd logo
1 de 85
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Programación de Sistemas IFCT0609 – Sistemas de Gestión IFCD0211
Profesor: Manel
Montero
INDICE
Programación de Sistemas IFCT0609
• Sistemas de Control de Versiones
Profesor: Manel
Control de Versiones
Programación de Sistemas IFCT0609
¿Qué es el control de versiones?
El control de versiones es un sistema que registra los
cambios realizados sobre un archivo o conjunto de
archivos a lo largo del tiempo, de modo que puedas
recuperar versiones específicas más adelante.
Profesor: Manel
Introducción
Control de Versiones
Programación de Sistemas IFCT0609
Cualquier tipo de archivo que encuentres en un
ordenador puede ponerse bajo control de versiones
Profesor: Manel
Introducción
Control de Versiones
Programación de Sistemas IFCT0609
Si eres diseñador gráfico o web, y quieres mantener cada
versión de una imagen o diseño (algo que sin duda quieres),
un sistema de control de versiones (Version Control System o
VCS en inglés) es una elección muy sabia.
Profesor: Manel
Introducción
Control de Versiones
Programación de Sistemas IFCT0609
Te permite revertir archivos a un estado anterior,
revertir el proyecto entero a un estado anterior,
comparar cambios a lo largo del tiempo,
ver quién modificó por última vez algo que puede estar
causando un problema,
quién introdujo un error
y cuándo, y mucho más.
Profesor: Manel
Introducción
Control de Versiones
Programación de Sistemas IFCT0609
Usar un VCS también significa generalmente que si fastidias o
pierdes archivos, puedes recuperarlos fácilmente.
Además, obtienes todos estos beneficios a un coste muy bajo.
Profesor: Manel
Introducción
Control de Versiones
Programación de Sistemas IFCT0609
Un método de control de versiones usado por mucha gente es
copiar los archivos a otro directorio (quizás indicando la fecha
y hora en que lo hicieron, si son avispados).
Este enfoque es muy común porque es muy simple, pero
también tremendamente propenso a errores.
Profesor: Manel
LOS METODOS DE LA GENTE…
Control de Versiones
Programación de Sistemas IFCT0609
Es fácil olvidar en qué directorio te encuentras, y guardar
accidentalmente en el archivo equivocado o sobrescribir
archivos que no querías.
Profesor: Manel
LOS METODOS DE LA GENTE…
Control de Versiones
Programación de Sistemas IFCT0609
Para hacer frente a este problema, los programadores
desarrollaron hace tiempo VCSs locales que contenían una
simple base de datos en la que se llevaba registro de todos los
cambios realizados sobre los archivos.
Profesor: Manel
LOS METODOS DE LA GENTE…
Control de Versiones
Programación de Sistemas IFCT0609
El siguiente gran problema que se encuentra la gente es que
necesitan colaborar con desarrolladores en otros sistemas. Para
solventar este problema, se desarrollaron los sistemas de
control de versiones centralizados (Centralized Version Control
Systems o CVCSs en inglés).
Profesor: Manel
Sistemas de Control de Versiones Centralizados
Control de Versiones
Programación de Sistemas IFCT0609
Estos sistemas, como CVS y Subversion tienen un único
servidor que contiene todos los archivos versionados, y varios
clientes que descargan los archivos desde ese lugar central.
Durante muchos años éste ha sido el estándar para el control
de versiones
Profesor: Manel
Sistemas de Control de Versiones Centralizados
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel
Montero
Sistemas de Control de Versiones Centralizados
Control de Versiones
Programación de Sistemas IFCT0609
Sin embargo, esta configuración también tiene serias
desventajas. La más obvia es el punto único de fallo que
representa el servidor centralizado. Si ese servidor se cae
durante una hora, entonces durante esa hora nadie puede
colaborar o guardar cambios versionados de aquello en que
están trabajando.
Profesor: Manel
Sistemas de Control de Versiones Centralizados
Control de Versiones
Programación de Sistemas IFCT0609
Si el disco duro en el que se encuentra la base de datos central
se corrompe, y no se han llevado copias de seguridad
adecuadamente, pierdes absolutamente todo
—toda la historia del proyecto salvo aquellas instantáneas que
la gente pueda tener en sus máquinas locales.
Los VCSs locales sufren de este mismo problema— cuando
tienes toda la historia del proyecto en un único lugar, te
arriesgas a perderlo todo.
Profesor: Manel
Sistemas de Control de Versiones Centralizados
Control de Versiones
Programación de Sistemas IFCT0609
Es aquí donde entran los sistemas de control de versiones
distribuidos (Distributed Version Control Systems o DVCSs en
inglés).
En un DVCS (como Git, Mercurial, Bazaar o Darcs), los clientes
no sólo descargan la última instantánea de los archivos:
replican completamente el repositorio.
Profesor: Manel
Sistemas de Control de Versiones Distribuidos
Control de Versiones
Programación de Sistemas IFCT0609
Así, si un servidor muere, y estos sistemas estaban
colaborando a través de él, cualquiera de los repositorios de
los clientes puede copiarse en el servidor para restaurarlo.
Cada vez que se descarga una instantánea, en realidad se hace
una copia de seguridad completa de todos los datos
Profesor: Manel
Sistemas de Control de Versiones Distribuidos
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel
Montero
Sistemas de Control de Versiones Distribuidos
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel
Montero
Sistemas de Control de Versiones Distribuidos
GIT fue lanzado en 2005 por Linus Torvalds, el creador de
Linux, para mantener el código del propio Linux entre los
miles de Programadores que trabajan en su mantenimiento
actualmente.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Sistemas de Control de Versiones Distribuidos
Algunos de los objetivos del nuevo sistema fueron los
siguientes:
Velocidad
Diseño sencillo
Fuerte apoyo al desarrollo no lineal (miles de ramas
paralelas)
Completamente distribuido
Capaz de manejar grandes proyectos (como el núcleo de
Linux) de manera eficiente (velocidad y tamaño de los
datos)
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Sistemas de Control de Versiones Distribuidos
Desde su nacimiento en 2005, Git ha evolucionado y
madurado para ser fácil de usar y aún conservar estas
cualidades iniciales.
Es tremendamente rápido, muy eficiente con grandes
proyectos, y tiene un increíble sistema de ramificación
(branching) para desarrollo no lineal
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Sistemas de Control de Versiones Distribuidos
La principal diferencia entre Git y cualquier otro VCS
(Subversion y compañía incluidos) es cómo Git modela sus
datos.
Conceptualmente, la mayoría de los demás sistemas
almacenan la información como una lista de cambios en los
archivos. Estos sistemas (CVS, Subversion, Perforce, Bazaar,
etc.) modelan la información que almacenan como un
conjunto de archivos y las modificaciones hechas sobre
cada uno de ellos a lo largo del tiempo.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Sistemas de Control de Versiones Distribuidos
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Sistemas de Control de Versiones Distribuidos
Git no modela ni almacena sus datos de este modo. En
cambio, Git modela sus datos más como un conjunto de
instantáneas de un mini sistema de archivos. Cada vez que
confirmas un cambio, o guardas el estado de tu proyecto en
Git, él básicamente hace una foto del aspecto de todos tus
archivos en ese momento, y guarda una referencia a esa
instantánea. Para ser eficiente, si los archivos no se han
modificado, Git no almacena el archivo de nuevo, sólo un
enlace al archivo anterior idéntico que ya tiene almacenado
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Sistemas de Control de Versiones Distribuidos
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Sistemas de Control de Versiones Distribuidos
La mayoría de las operaciones en Git sólo necesitan archivos
y recursos locales para operar. No se suele necesitar
información de ningún otro ordenador de tu red. Si estás
acostumbrado a un CVCS donde la mayoría de operaciones
tienen el retardo de red, este aspecto de Git te va a hacer
pensar que Git es maravilloso.
Como tienes toda la historia del proyecto ahí mismo, en tu
disco local, la mayoría de las operaciones parecen
prácticamente inmediatas.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
GIT
Por ejemplo, para navegar por la historia del proyecto,
Git no necesita salir al servidor para obtener la historia y
mostrártela,
simplemente la lee directamente de tu base de datos local.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
GIT
Si quieres ver los cambios introducidos en un archivo entre
la versión actual y la de hace un mes,
Git puede buscar el archivo hace un mes y hacer un cálculo
de diferencias localmente,
en lugar de tener que pedirle a un servidor remoto que lo
haga,
u obtener una versión antigua desde la red y hacerlo de
manera local.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
GIT
Esto también significa que hay muy poco que no puedas
hacer si estás desconectado o sin VPN. Si te subes a un
avión o a un tren y quieres trabajar un poco, puedes
confirmar tus cambios felizmente hasta que consigas una
conexión de red para subirlos. Si te vas a casa y no
consigues que tu cliente VPN funcione correctamente,
puedes seguir trabajando. En muchos otros sistemas, esto
es imposible o muy doloroso. En Perforce, por ejemplo, no
puedes hacer mucho cuando no estás conectado al servidor;
y en Subversion y CVS, puedes editar archivos, pero no
puedes confirmar los cambios a tu base de datos (porque tu
base de datos no tiene conexión). Esto puede no parecer
gran cosa, pero te sorprendería la diferencia que puede
suponer.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
GIT
Todo en Git es verificado mediante una suma de
comprobación (checksum en inglés) antes de ser
almacenado, El mecanismo que usa Git para generar esta
comprobación se conoce como hash SHA-1.
Se trata de una cadena de 40 caracteres hexadecimales (0-9
y a-f), y se calcula en base a los contenidos del archivo o
estructura de directorios. Un hash SHA-1 tiene esta pinta:
24b9da6552252987aa493b52f8696cd6d3b00373
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
GIT
Git guarda todo no por nombre de archivo, sino por el
valor hash de sus contenidos
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
PERDER DATOS !!!
Puedes perder o estropear cambios que no has confirmado
todavía;
pero después de confirmar una instantánea en Git, es muy
difícil de perder,
especialmente si envías (push) tu base de datos a otro
repositorio con regularidad
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Los tres estados de git
Git tiene tres estados principales en los que se pueden
encontrar tus archivos:
confirmado (committed),
modificado (modified), y
preparado (staged).
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
PERDER DATOS !!!
Confirmado significa que los datos están almacenados de
manera segura en tu base de datos local.
Modificado significa que has modificado el archivo pero
todavía no lo has confirmado a tu base de datos.
Preparado significa que has marcado un archivo modificado
en su versión actual para que vaya en tu próxima
confirmación.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
3 ESTADOS!!!
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
PERDER DATOS !!!
El directorio de Git es donde Git almacena los metadatos y
la base de datos de objetos para tu proyecto.
Es la parte más importante de Git, y es lo que se copia
cuando clonas un repositorio desde otro ordenador.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
PERDER DATOS !!!
El directorio de trabajo es una copia de una versión del
proyecto.
Estos archivos se sacan de la base de datos comprimida en
el directorio de Git, y se colocan en disco para que los
puedas usar o modificar.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
PERDER DATOS !!!
El área de preparación es un sencillo archivo, generalmente
contenido en tu directorio de Git,
que almacena información acerca de lo que va a ir en tu
próxima confirmación.
A veces se le denomina índice, pero se está convirtiendo en
estándar el referirse a ella como el área de preparación.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
COMO SE TRABAJA EN GIT
El flujo de trabajo básico en Git es algo así:
Modificas una serie de archivos en tu directorio de trabajo.
Preparas los archivos, añadiendolos a tu área de
preparación.
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.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
ESTADOS DE UN FICHERO O VERSION DE UN ARCHIVO
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).
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
INSTALACION DE GIT
En Linux, instalamos GIT
En Ubuntu / Debian
$> sudo apt install git
En Windows:
Descargando e instalando desde su página
http://msysgit.github.com/
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
INSTALACION DE GIT
Una vez instalado, tendrás tanto la versión de línea de comandos (incluido
un cliente SSH que nos será útil más adelante) como la interfaz gráfica de
usuario estándar.
Nota para el uso en Windows: Se debería usar Git con la shell provista por
msysGit (estilo Unix), lo cual permite usar las complejas líneas de comandos
de este libro.
Si por cualquier razón se necesitara usar la shell nativa de Windows, la
consola de línea de comandos, se han de usar las comillas dobles en vez de
las simples (para parámetros que contengan espacios) y se deben
entrecomillar los parámetros terminándolos con el acento circunflejo (^) si
están al final de la línea, ya que en Windows es uno de los símbolos de
continuación.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
USUARIO
Tu identidad
Lo primero que deberías hacer cuando instalas Git es
establecer tu nombre de usuario y dirección de correo
electrónico.
Esto es importante porque las confirmaciones de cambios
(commits) en Git usan esta información, y es introducida de
manera inmutable en los commits que envías:
$ git config --global user.name “Pepe Martin"
$ git config --global user.email pepe@gmail.com
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
USUARIO
Ahora que tu identidad está configurada, puedes elegir el
editor de texto por defecto que se utilizará cuando Git
necesite que introduzcas un mensaje. Si no indicas nada, Git
usa el editor por defecto de tu sistema, que generalmente
es Vi o Vim. Si quieres usar otro editor de texto, como
nano, puedes hacer lo siguiente:
$ git config --global core.editor nano
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
USUARIO
Tu herramienta de diferencias
Otra opción útil que puede que quieras configurar es la herramienta de diferencias
por defecto, usada para resolver conflictos de unión (merge). Digamos que quieres
usar vimdiff:
$ git config --global merge.tool vimdiff
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
USUARIO
Si quieres comprobar la configuración
$ git config --list
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
USUARIO
Ayuda
$ git help config
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
FUNDAMENTOS DE GIT
Inicializando un repositorio en un directorio existente
Si estás empezando el seguimiento en Git de un proyecto
existente, necesitas ir al directorio del proyecto y escribir:
$ git init
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
FUNDAMENTOS DE GIT
Esto crea un nuevo subdirectorio llamado .git que contiene
todos los archivos necesarios del repositorio —un esqueleto
de un repositorio Git.
Todavía no hay nada en tu proyecto que esté bajo
seguimiento.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
FUNDAMENTOS DE GIT
Hemos creado un directorio proyectos/proyecto1 en /home/usuario con anterioridad
$mkdir /home/usuario/proyectos/proyecto1
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
FUNDAMENTOS DE GIT
Si deseas empezar a controlar versiones de archivos
existentes (a diferencia de un directorio vacío),
probablemente deberías comenzar el seguimiento de esos
archivos y hacer una confirmación inicial. Puedes
conseguirlo con unos pocos comandos git add para
especificar qué archivos quieres controlar, seguidos de
un commit para confirmar los cambios:
$ git add *.py
$ git add README
$ git commit –m 'versión inicial del proyecto'
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
FUNDAMENTOS DE GIT
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
FUNDAMENTOS DE GIT
Ahora traemos 3 archivos Python desde el puente
dado1.py
dado2.py
dado3.py
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
FUNDAMENTOS DE GIT
Ahora traemos 3 archivos Python desde el puente
dado1.py
dado2.py
dado3.py
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
FUNDAMENTOS DE GIT
Para colaborar con un proyecto git, lo que hay que hacer es
un clone.
$>git clone git://github.com/schacon/grit.git
Si queremos darle otro nombre al proyecto.
$ git clone git://github.com/schacon/grit.git miproyectogrit
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
FUNDAMENTOS DE GIT
Para colaborar con un proyecto git, lo que hay que hacer es
un clone.
Por ejemplo también
El ejemplo anterior usa el protocolo
git://
http(s)://
usuario@servidor:/ruta.git
http(s):// o usuario@servidor:/ruta.git,
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
IMPORTAR UN PROYECTO- CLONE
En este caso
Git clone
usuario@192.168.1.140:/home/usuario/proyectos/proyecto
profe/.git
http(s):// o usuario@servidor:/ruta.git,
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
GUARDAR ESTADO NUEVO DE TU PROYECTO
Tienes un repositorio Git completo, y una copia de trabajo
de los archivos de ese proyecto.
Necesitas hacer algunos cambios, y confirmar instantáneas
de esos cambios a tu repositorio cada vez que el proyecto
alcance un estado que desees grabar.
http(s):// o usuario@servidor:/ruta.git,
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
GUARDAR ESTADO NUEVO DE TU PROYECTO
Recuerda que cada archivo de tu directorio de trabajo
puede estar dos estados:
bajo seguimiento (tracked),
o sin seguimiento (untracked).
Los archivos bajo seguimiento existían en la última
instantánea; pueden estar sin modificaciones, modificados,
o preparados.
Los archivos sin seguimiento son todos los demás —
cualquiera que no estuviese en tu última instantánea ni está
en tu área de preparación—.
La primera vez que clonas, todos tus archivos estarán bajo
seguimiento y sin modificaciones, ya que los acabas de
copiar y no has modificado nada.
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
GUARDAR ESTADO NUEVO DE TU PROYECTO
A medida que editas archivos, Git los ve como modificados,
porque los has cambiado desde tu última confirmación.
Preparas estos archivos modificados y luego confirmas
todos los cambios que hayas preparado, y el ciclo se repite
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
GUARDAR ESTADO NUEVO DE TU PROYECTO
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Ver el estado
$>git status
# On branch master nothing to commit, working directory clean
Esto significa que todo ok, sin cambios
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Ignorar archivos
A menudo tendrás un tipo de archivos que no quieras que
Git añada automáticamente o te muestre como no
versionado. Suelen ser archivos generados
automáticamente, como archivos de log, o archivos
generados por tu compilador. Para estos casos puedes crear
un archivo llamado .gitignore, en el que listas los patrones
de nombres que deseas que sean ignorados.
He aquí un archivo .gitignore de ejemplo:
$ cat .gitignore
*.[oa]
*~
Ignorando archivos
A menudo tendrás un tipo de archivos que no quieras que Git añada automáticamente o te muestre como no versionado. Suelen ser archivos generados automáticam
$ cat .gitignore *.[oa] *~
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Ignorar archivos
# a comment – this is ignored
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files
above
!lib.a
# only ignore the root TODO file, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .txt files in the doc/ directory
doc/**/*.txt
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
DIFERENCIAS DE ARCHIVOS
Para saber las diferencias de Archivos que has cambiado,
dispones del comando
$>git diff --staged
Compara la versión estable, con la ultima preparada
Ignorando archivos
A menudo tendrás un tipo de archivos que no quieras que Git añada automáticamente o te muestre como no versionado. Suelen ser archivos generados automáticam
$ cat .gitignore *.[oa] *~
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
DIFERENCIAS DE ARCHIVOS
Tienes que haber puesto git add para que se incluyan para
la siguiente confirmación.
Ignorando archivos
A menudo tendrás un tipo de archivos que no quieras que Git añada automáticamente o te muestre como no versionado. Suelen ser archivos generados automáticam
$ cat .gitignore *.[oa] *~
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
CONFIRMACION DE ARCHIVOS
Para confirmar LOS CAMBIOS EN EL SERVIDOR,
REALIZAREMOS
$>git commit
Cuando haces el git commit te pregunta que
“Cadena de texto a escribir para validar”
Escribes una cadena y guardas
Posteriormente se guardan los cambios validados en local.
Si quieres publicarlos se hará con “git push”
Ignorando archivos
A menudo tendrás un tipo de archivos que no quieras que Git añada automáticamente o te muestre como no versionado. Suelen ser archivos generados automáticam
$ cat .gitignore *.[oa] *~
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
CONFIRMACION DE ARCHIVOS
Si quieres confirmar directamente sin hacer el git add
$>git commit –a –m ‘Nuevos cambios’
Cuando haces el git commit te pregunta que
“Cadena de texto a escribir para validar”
Escribes una cadena y guardas
Posteriormente se guardan los cambios validados en local.
Si quieres publicarlos se hará con “git push”
Ignorando archivos
A menudo tendrás un tipo de archivos que no quieras que Git añada automáticamente o te muestre como no versionado. Suelen ser archivos generados automáticam
$ cat .gitignore *.[oa] *~
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
ELIMINACION DE ARCHIVOS
Si quieres ELIMINAR un archivo de GIT
$>git rm fichero
$>git rm log/*.log
Para eliminar un archivo de Git, debes eliminarlo de tus
archivos bajo seguimiento (más concretamente, debes
eliminarlo de tu área de preparación), y después confirmar.
El comando git rm se encarga de eso, y también elimina el
archivo de tu directorio de trabajo, para que no lo veas
entre los archivos sin seguimiento.
Con el parámetro –f se fuerza la eliminación
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
ELIMINACION DE ARCHIVOS
Si quieres eliminar el archivo del seguimiento de Git, pero
que siga en el área de trabajo
$>git rm --cached readme.txt
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
RENOMBRAR ARCHIVOS
$ git mv FICHERO_VIEJO_NOMBRE FICHERO_NUEVO_NOMBRE
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Proyecto Para pruebas
git clone git://github.com/schacon/simplegit-progit.git
Probar después el “$>git log” para ver la secuencia de
commits sobre el proyecto. Aparecen en orden inverso
$>git log –p -2
-p muestra los mensajes
-2 muestra los dos últimos commits
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Para visualizar el log más fácil
Gitk
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Para visualizar el log más fácil
Si haces un commit y por ejemplo te has dejado un fichero
$ git commit -m ‘Commit inicial del martes 15’
$ git add fichero_olvidado
$ git commit –amend
Estos tres comandos acabarán convirtiéndose en una única confirmación —la
segunda confirmación reemplazará los resultados de la primera
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Para sacar del área de preparacion
Preparas 2 archivos y quieres quitar uno
$>git add fichero1
$>git add fichero2
$> git status  Están los 2 ficheros
$>git reset HEAD fichero2
$git status  Solo estará el fichero1 ahora
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Para volver a la antigua versión de un archivo
$>git checkout -- fichero.txt
Volverá a la versión validada ultima de fichero.txt
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
TRABAJAR CON REPOSITORIOS REMOTOS
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Con repositorios remotos
Puedes tener varios,
Cada uno de los cuales puede ser de sólo lectura, o de
lectura/escritura, según los permisos que tengas.
Colaborar con otros implica gestionar estos repositorios
remotos, y
mandar (push) y
recibir (pull)
datos de ellos
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Con repositorios remotos
Para saber los remotos, hacemos git remote
Si no sale nada, estamos en el servidor
Si sale origin (Es el servidor del que clonamos. Por defecto)
Si sale otra cosa, es el servidor del que clonamos
$ git remote -v
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Con repositorios remotos
Si hay más de un remoto, se listan todos: (Pero solo se puede enviar al
remoto origen)
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Añadir Repositorios Remotos
Para añadir un nuevo repositorio Git remoto,
asignándole un nombre con el que referenciarlo
fácilmente, ejecuta git remote add [nombre] [url]:
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Enviar Info al servidor
$>git push origin master
Manda la información del Proyecto principal (master)
al Repositorio origin
Control de Versiones
Programación de Sistemas IFCT0609
Profesor: Manel Montero
Enviar Info al servidor
$>git push origin master
Este comando funciona únicamente si has clonado de un servidor en el
que tienes permiso de escritura, y nadie ha enviado información mientras
tanto. Si tú y otra persona clonais a la vez, y él envía su información y
luego envías tú la tuya, tu envío será rechazado. Tendrás que bajarte
primero su trabajo e incorporarlo en el tuyo para que se te permita hacer un
envío. para ver en detalle cómo enviar a servidores remotos.
FIN
Gracias por la atención !!!
Profesor: Manel
Montero
Gracias por la atención.

Más contenido relacionado

Similar a Uf2216 04-git

Control de versiones con git
Control de versiones con gitControl de versiones con git
Control de versiones con gitEudris Cabrera
 
Cómo migrar de source safe a team foundation server 2010
Cómo migrar de source safe a team foundation server 2010Cómo migrar de source safe a team foundation server 2010
Cómo migrar de source safe a team foundation server 2010Diego Vazquez Arce
 
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GITWUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GITJosé Ignacio Álvarez Ruiz
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasJosé Moreno
 
Técnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesTécnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesAngel Armenta
 
Semana 4 control de versiones planificacion y gestion
Semana 4 control de versiones planificacion y gestionSemana 4 control de versiones planificacion y gestion
Semana 4 control de versiones planificacion y gestionGiovani Ramirez
 
Auditoria de código de aplicaciones
Auditoria de código de aplicacionesAuditoria de código de aplicaciones
Auditoria de código de aplicacionesDmostajo
 
Resumen de Conceptos Red Hat Summit 2015
Resumen de Conceptos Red Hat Summit 2015Resumen de Conceptos Red Hat Summit 2015
Resumen de Conceptos Red Hat Summit 2015Semperti
 
Exposicion Equipo 3 Parcial 1.pptx
Exposicion Equipo 3 Parcial 1.pptxExposicion Equipo 3 Parcial 1.pptx
Exposicion Equipo 3 Parcial 1.pptxNavaChAn
 
Ciclo de vida de gestion de un sistema de informació. jeimy vizcaino.
Ciclo de vida de gestion de un sistema de informació. jeimy vizcaino.Ciclo de vida de gestion de un sistema de informació. jeimy vizcaino.
Ciclo de vida de gestion de un sistema de informació. jeimy vizcaino.JEIMY LORENA VIZCAINO VARELA
 
Paso4 colborativo3 grupo11
Paso4 colborativo3 grupo11Paso4 colborativo3 grupo11
Paso4 colborativo3 grupo11YOLAGAR
 
Gestión de Cambios de BBDD con LiquiBase
Gestión de Cambios de BBDD con LiquiBaseGestión de Cambios de BBDD con LiquiBase
Gestión de Cambios de BBDD con LiquiBasePaulo Clavijo
 
Induccion0_GitLab.pptx
Induccion0_GitLab.pptxInduccion0_GitLab.pptx
Induccion0_GitLab.pptxssuser3ff40a
 
Introducción a los sistemas operativos segunda parte
Introducción a los sistemas operativos segunda parte Introducción a los sistemas operativos segunda parte
Introducción a los sistemas operativos segunda parte oax123
 

Similar a Uf2216 04-git (20)

Aporte grupal momento 3
Aporte grupal momento 3Aporte grupal momento 3
Aporte grupal momento 3
 
Control de versiones con git
Control de versiones con gitControl de versiones con git
Control de versiones con git
 
Cómo migrar de source safe a team foundation server 2010
Cómo migrar de source safe a team foundation server 2010Cómo migrar de source safe a team foundation server 2010
Cómo migrar de source safe a team foundation server 2010
 
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GITWUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
 
Plantilla fase2
Plantilla fase2Plantilla fase2
Plantilla fase2
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
 
Capitulo 11 parte1 (2)
Capitulo 11 parte1 (2)Capitulo 11 parte1 (2)
Capitulo 11 parte1 (2)
 
Técnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesTécnicas avanzadas de control de versiones
Técnicas avanzadas de control de versiones
 
Scm
ScmScm
Scm
 
Semana 4 control de versiones planificacion y gestion
Semana 4 control de versiones planificacion y gestionSemana 4 control de versiones planificacion y gestion
Semana 4 control de versiones planificacion y gestion
 
Auditoria de código de aplicaciones
Auditoria de código de aplicacionesAuditoria de código de aplicaciones
Auditoria de código de aplicaciones
 
Resumen de Conceptos Red Hat Summit 2015
Resumen de Conceptos Red Hat Summit 2015Resumen de Conceptos Red Hat Summit 2015
Resumen de Conceptos Red Hat Summit 2015
 
Exposicion Equipo 3 Parcial 1.pptx
Exposicion Equipo 3 Parcial 1.pptxExposicion Equipo 3 Parcial 1.pptx
Exposicion Equipo 3 Parcial 1.pptx
 
Ciclo de vida de gestion de un sistema de informació. jeimy vizcaino.
Ciclo de vida de gestion de un sistema de informació. jeimy vizcaino.Ciclo de vida de gestion de un sistema de informació. jeimy vizcaino.
Ciclo de vida de gestion de un sistema de informació. jeimy vizcaino.
 
Fase4 301402 48
Fase4 301402  48Fase4 301402  48
Fase4 301402 48
 
Paso4 colborativo3 grupo11
Paso4 colborativo3 grupo11Paso4 colborativo3 grupo11
Paso4 colborativo3 grupo11
 
Versionamiento
VersionamientoVersionamiento
Versionamiento
 
Gestión de Cambios de BBDD con LiquiBase
Gestión de Cambios de BBDD con LiquiBaseGestión de Cambios de BBDD con LiquiBase
Gestión de Cambios de BBDD con LiquiBase
 
Induccion0_GitLab.pptx
Induccion0_GitLab.pptxInduccion0_GitLab.pptx
Induccion0_GitLab.pptx
 
Introducción a los sistemas operativos segunda parte
Introducción a los sistemas operativos segunda parte Introducción a los sistemas operativos segunda parte
Introducción a los sistemas operativos segunda parte
 

Más de Manel Montero

Subsistema logico tema 1. IFCT0210
Subsistema logico tema 1. IFCT0210Subsistema logico tema 1. IFCT0210
Subsistema logico tema 1. IFCT0210Manel Montero
 
Repositorios de Contenidos. CMS. Tema 1
Repositorios de Contenidos. CMS. Tema 1Repositorios de Contenidos. CMS. Tema 1
Repositorios de Contenidos. CMS. Tema 1Manel Montero
 
Subsistema logico tema 2
Subsistema logico tema 2Subsistema logico tema 2
Subsistema logico tema 2Manel Montero
 
Seguridad Informática.
Seguridad Informática.Seguridad Informática.
Seguridad Informática.Manel Montero
 
Redes locales tema 06. Taller de Empleo Sistemas Microinformáticos. la Rincon...
Redes locales tema 06. Taller de Empleo Sistemas Microinformáticos. la Rincon...Redes locales tema 06. Taller de Empleo Sistemas Microinformáticos. la Rincon...
Redes locales tema 06. Taller de Empleo Sistemas Microinformáticos. la Rincon...Manel Montero
 
Apuntes Redes locales tema 07. Taller Empleo Microinformática. La Rinconada. ...
Apuntes Redes locales tema 07. Taller Empleo Microinformática. La Rinconada. ...Apuntes Redes locales tema 07. Taller Empleo Microinformática. La Rinconada. ...
Apuntes Redes locales tema 07. Taller Empleo Microinformática. La Rinconada. ...Manel Montero
 

Más de Manel Montero (7)

Subsistema logico tema 1. IFCT0210
Subsistema logico tema 1. IFCT0210Subsistema logico tema 1. IFCT0210
Subsistema logico tema 1. IFCT0210
 
Repositorios de Contenidos. CMS. Tema 1
Repositorios de Contenidos. CMS. Tema 1Repositorios de Contenidos. CMS. Tema 1
Repositorios de Contenidos. CMS. Tema 1
 
Subsistema logico tema 2
Subsistema logico tema 2Subsistema logico tema 2
Subsistema logico tema 2
 
Seguridad Informática.
Seguridad Informática.Seguridad Informática.
Seguridad Informática.
 
Redes locales tema 06. Taller de Empleo Sistemas Microinformáticos. la Rincon...
Redes locales tema 06. Taller de Empleo Sistemas Microinformáticos. la Rincon...Redes locales tema 06. Taller de Empleo Sistemas Microinformáticos. la Rincon...
Redes locales tema 06. Taller de Empleo Sistemas Microinformáticos. la Rincon...
 
Apuntes Redes locales tema 07. Taller Empleo Microinformática. La Rinconada. ...
Apuntes Redes locales tema 07. Taller Empleo Microinformática. La Rinconada. ...Apuntes Redes locales tema 07. Taller Empleo Microinformática. La Rinconada. ...
Apuntes Redes locales tema 07. Taller Empleo Microinformática. La Rinconada. ...
 
Semillas Formativas
Semillas FormativasSemillas Formativas
Semillas Formativas
 

Último

Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticJamithGarcia1
 
Gestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalGestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalMarcosAlvarezSalinas
 
Qué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaQué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaJoellyAlejandraRodrg
 
Los primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfLos primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfJC Díaz Herrera
 
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptxMÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptxCristianCastro978067
 
Los idiomas más hablados en el mundo (2024).pdf
Los idiomas más hablados en el mundo  (2024).pdfLos idiomas más hablados en el mundo  (2024).pdf
Los idiomas más hablados en el mundo (2024).pdfJC Díaz Herrera
 
Las mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfLas mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfJC Díaz Herrera
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfJC Díaz Herrera
 
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxAA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxLuisAngelYomonaYomon
 
Posiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdfPosiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdfJC Díaz Herrera
 
Presentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfPresentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfDodiAcuaArstica
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfJC Díaz Herrera
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdfJC Díaz Herrera
 
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfPosiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfJC Díaz Herrera
 
Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024AndrsReinosoSnchez1
 
Tipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxTipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxMiguelPerz4
 
Las familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfLas familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfJC Díaz Herrera
 
Posiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfPosiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfJC Díaz Herrera
 
Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfalexanderleonyonange
 
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICACNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICAYOSHELINSARAIMAMANIS2
 

Último (20)

Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
 
Gestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalGestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajal
 
Qué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaQué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problema
 
Los primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfLos primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdf
 
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptxMÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
 
Los idiomas más hablados en el mundo (2024).pdf
Los idiomas más hablados en el mundo  (2024).pdfLos idiomas más hablados en el mundo  (2024).pdf
Los idiomas más hablados en el mundo (2024).pdf
 
Las mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfLas mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdf
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdf
 
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxAA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
 
Posiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdfPosiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdf
 
Presentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfPresentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdf
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
 
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfPosiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
 
Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024
 
Tipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxTipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptx
 
Las familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfLas familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdf
 
Posiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfPosiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdf
 
Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdf
 
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICACNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
 

Uf2216 04-git

  • 1. Programación de Sistemas IFCT0609 Profesor: Manel Montero
  • 2. Programación de Sistemas IFCT0609 – Sistemas de Gestión IFCD0211 Profesor: Manel Montero
  • 3. INDICE Programación de Sistemas IFCT0609 • Sistemas de Control de Versiones Profesor: Manel
  • 4. Control de Versiones Programación de Sistemas IFCT0609 ¿Qué es el control de versiones? El control de versiones es un sistema que registra los cambios realizados sobre un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante. Profesor: Manel Introducción
  • 5. Control de Versiones Programación de Sistemas IFCT0609 Cualquier tipo de archivo que encuentres en un ordenador puede ponerse bajo control de versiones Profesor: Manel Introducción
  • 6. Control de Versiones Programación de Sistemas IFCT0609 Si eres diseñador gráfico o web, y quieres mantener cada versión de una imagen o diseño (algo que sin duda quieres), un sistema de control de versiones (Version Control System o VCS en inglés) es una elección muy sabia. Profesor: Manel Introducción
  • 7. Control de Versiones Programación de Sistemas IFCT0609 Te permite revertir archivos a un estado anterior, revertir el proyecto entero a un estado anterior, comparar cambios a lo largo del tiempo, ver quién modificó por última vez algo que puede estar causando un problema, quién introdujo un error y cuándo, y mucho más. Profesor: Manel Introducción
  • 8. Control de Versiones Programación de Sistemas IFCT0609 Usar un VCS también significa generalmente que si fastidias o pierdes archivos, puedes recuperarlos fácilmente. Además, obtienes todos estos beneficios a un coste muy bajo. Profesor: Manel Introducción
  • 9. Control de Versiones Programación de Sistemas IFCT0609 Un método de control de versiones usado por mucha gente es copiar los archivos a otro directorio (quizás indicando la fecha y hora en que lo hicieron, si son avispados). Este enfoque es muy común porque es muy simple, pero también tremendamente propenso a errores. Profesor: Manel LOS METODOS DE LA GENTE…
  • 10. Control de Versiones Programación de Sistemas IFCT0609 Es fácil olvidar en qué directorio te encuentras, y guardar accidentalmente en el archivo equivocado o sobrescribir archivos que no querías. Profesor: Manel LOS METODOS DE LA GENTE…
  • 11. Control de Versiones Programación de Sistemas IFCT0609 Para hacer frente a este problema, los programadores desarrollaron hace tiempo VCSs locales que contenían una simple base de datos en la que se llevaba registro de todos los cambios realizados sobre los archivos. Profesor: Manel LOS METODOS DE LA GENTE…
  • 12. Control de Versiones Programación de Sistemas IFCT0609 El siguiente gran problema que se encuentra la gente es que necesitan colaborar con desarrolladores en otros sistemas. Para solventar este problema, se desarrollaron los sistemas de control de versiones centralizados (Centralized Version Control Systems o CVCSs en inglés). Profesor: Manel Sistemas de Control de Versiones Centralizados
  • 13. Control de Versiones Programación de Sistemas IFCT0609 Estos sistemas, como CVS y Subversion tienen un único servidor que contiene todos los archivos versionados, y varios clientes que descargan los archivos desde ese lugar central. Durante muchos años éste ha sido el estándar para el control de versiones Profesor: Manel Sistemas de Control de Versiones Centralizados
  • 14. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Sistemas de Control de Versiones Centralizados
  • 15. Control de Versiones Programación de Sistemas IFCT0609 Sin embargo, esta configuración también tiene serias desventajas. La más obvia es el punto único de fallo que representa el servidor centralizado. Si ese servidor se cae durante una hora, entonces durante esa hora nadie puede colaborar o guardar cambios versionados de aquello en que están trabajando. Profesor: Manel Sistemas de Control de Versiones Centralizados
  • 16. Control de Versiones Programación de Sistemas IFCT0609 Si el disco duro en el que se encuentra la base de datos central se corrompe, y no se han llevado copias de seguridad adecuadamente, pierdes absolutamente todo —toda la historia del proyecto salvo aquellas instantáneas que la gente pueda tener en sus máquinas locales. Los VCSs locales sufren de este mismo problema— cuando tienes toda la historia del proyecto en un único lugar, te arriesgas a perderlo todo. Profesor: Manel Sistemas de Control de Versiones Centralizados
  • 17. Control de Versiones Programación de Sistemas IFCT0609 Es aquí donde entran los sistemas de control de versiones distribuidos (Distributed Version Control Systems o DVCSs en inglés). En un DVCS (como Git, Mercurial, Bazaar o Darcs), los clientes no sólo descargan la última instantánea de los archivos: replican completamente el repositorio. Profesor: Manel Sistemas de Control de Versiones Distribuidos
  • 18. Control de Versiones Programación de Sistemas IFCT0609 Así, si un servidor muere, y estos sistemas estaban colaborando a través de él, cualquiera de los repositorios de los clientes puede copiarse en el servidor para restaurarlo. Cada vez que se descarga una instantánea, en realidad se hace una copia de seguridad completa de todos los datos Profesor: Manel Sistemas de Control de Versiones Distribuidos
  • 19. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Sistemas de Control de Versiones Distribuidos
  • 20. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Sistemas de Control de Versiones Distribuidos GIT fue lanzado en 2005 por Linus Torvalds, el creador de Linux, para mantener el código del propio Linux entre los miles de Programadores que trabajan en su mantenimiento actualmente.
  • 21. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Sistemas de Control de Versiones Distribuidos Algunos de los objetivos del nuevo sistema fueron los siguientes: Velocidad Diseño sencillo Fuerte apoyo al desarrollo no lineal (miles de ramas paralelas) Completamente distribuido Capaz de manejar grandes proyectos (como el núcleo de Linux) de manera eficiente (velocidad y tamaño de los datos)
  • 22. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Sistemas de Control de Versiones Distribuidos Desde su nacimiento en 2005, Git ha evolucionado y madurado para ser fácil de usar y aún conservar estas cualidades iniciales. Es tremendamente rápido, muy eficiente con grandes proyectos, y tiene un increíble sistema de ramificación (branching) para desarrollo no lineal
  • 23. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Sistemas de Control de Versiones Distribuidos La principal diferencia entre Git y cualquier otro VCS (Subversion y compañía incluidos) es cómo Git modela sus datos. Conceptualmente, la mayoría de los demás sistemas almacenan la información como una lista de cambios en los archivos. Estos sistemas (CVS, Subversion, Perforce, Bazaar, etc.) modelan la información que almacenan como un conjunto de archivos y las modificaciones hechas sobre cada uno de ellos a lo largo del tiempo.
  • 24. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Sistemas de Control de Versiones Distribuidos
  • 25. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Sistemas de Control de Versiones Distribuidos Git no modela ni almacena sus datos de este modo. En cambio, Git modela sus datos más como un conjunto de instantáneas de un mini sistema de archivos. Cada vez que confirmas un cambio, o guardas el estado de tu proyecto en Git, él básicamente hace una foto del aspecto de todos tus archivos en ese momento, y guarda una referencia a esa instantánea. Para ser eficiente, si los archivos no se han modificado, Git no almacena el archivo de nuevo, sólo un enlace al archivo anterior idéntico que ya tiene almacenado
  • 26. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Sistemas de Control de Versiones Distribuidos
  • 27. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Sistemas de Control de Versiones Distribuidos La mayoría de las operaciones en Git sólo necesitan archivos y recursos locales para operar. No se suele necesitar información de ningún otro ordenador de tu red. Si estás acostumbrado a un CVCS donde la mayoría de operaciones tienen el retardo de red, este aspecto de Git te va a hacer pensar que Git es maravilloso. Como tienes toda la historia del proyecto ahí mismo, en tu disco local, la mayoría de las operaciones parecen prácticamente inmediatas.
  • 28. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero GIT Por ejemplo, para navegar por la historia del proyecto, Git no necesita salir al servidor para obtener la historia y mostrártela, simplemente la lee directamente de tu base de datos local.
  • 29. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero GIT Si quieres ver los cambios introducidos en un archivo entre la versión actual y la de hace un mes, Git puede buscar el archivo hace un mes y hacer un cálculo de diferencias localmente, en lugar de tener que pedirle a un servidor remoto que lo haga, u obtener una versión antigua desde la red y hacerlo de manera local.
  • 30. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero GIT Esto también significa que hay muy poco que no puedas hacer si estás desconectado o sin VPN. Si te subes a un avión o a un tren y quieres trabajar un poco, puedes confirmar tus cambios felizmente hasta que consigas una conexión de red para subirlos. Si te vas a casa y no consigues que tu cliente VPN funcione correctamente, puedes seguir trabajando. En muchos otros sistemas, esto es imposible o muy doloroso. En Perforce, por ejemplo, no puedes hacer mucho cuando no estás conectado al servidor; y en Subversion y CVS, puedes editar archivos, pero no puedes confirmar los cambios a tu base de datos (porque tu base de datos no tiene conexión). Esto puede no parecer gran cosa, pero te sorprendería la diferencia que puede suponer.
  • 31. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero GIT Todo en Git es verificado mediante una suma de comprobación (checksum en inglés) antes de ser almacenado, El mecanismo que usa Git para generar esta comprobación se conoce como hash SHA-1. Se trata de una cadena de 40 caracteres hexadecimales (0-9 y a-f), y se calcula en base a los contenidos del archivo o estructura de directorios. Un hash SHA-1 tiene esta pinta: 24b9da6552252987aa493b52f8696cd6d3b00373
  • 32. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero GIT Git guarda todo no por nombre de archivo, sino por el valor hash de sus contenidos
  • 33. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero PERDER DATOS !!! Puedes perder o estropear cambios que no has confirmado todavía; pero después de confirmar una instantánea en Git, es muy difícil de perder, especialmente si envías (push) tu base de datos a otro repositorio con regularidad
  • 34. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Los tres estados de git Git tiene tres estados principales en los que se pueden encontrar tus archivos: confirmado (committed), modificado (modified), y preparado (staged).
  • 35. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero PERDER DATOS !!! Confirmado significa que los datos están almacenados de manera segura en tu base de datos local. Modificado significa que has modificado el archivo pero todavía no lo has confirmado a tu base de datos. Preparado significa que has marcado un archivo modificado en su versión actual para que vaya en tu próxima confirmación.
  • 36. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero 3 ESTADOS!!!
  • 37. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero PERDER DATOS !!! El directorio de Git es donde Git almacena los metadatos y la base de datos de objetos para tu proyecto. Es la parte más importante de Git, y es lo que se copia cuando clonas un repositorio desde otro ordenador.
  • 38. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero PERDER DATOS !!! El directorio de trabajo es una copia de una versión del proyecto. Estos archivos se sacan de la base de datos comprimida en el directorio de Git, y se colocan en disco para que los puedas usar o modificar.
  • 39. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero PERDER DATOS !!! El área de preparación es un sencillo archivo, generalmente contenido en tu directorio de Git, que almacena información acerca de lo que va a ir en tu próxima confirmación. A veces se le denomina índice, pero se está convirtiendo en estándar el referirse a ella como el área de preparación.
  • 40. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero COMO SE TRABAJA EN GIT El flujo de trabajo básico en Git es algo así: Modificas una serie de archivos en tu directorio de trabajo. Preparas los archivos, añadiendolos a tu área de preparación. 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.
  • 41. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero ESTADOS DE UN FICHERO O VERSION DE UN ARCHIVO 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).
  • 42. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero INSTALACION DE GIT En Linux, instalamos GIT En Ubuntu / Debian $> sudo apt install git En Windows: Descargando e instalando desde su página http://msysgit.github.com/
  • 43. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero INSTALACION DE GIT Una vez instalado, tendrás tanto la versión de línea de comandos (incluido un cliente SSH que nos será útil más adelante) como la interfaz gráfica de usuario estándar. Nota para el uso en Windows: Se debería usar Git con la shell provista por msysGit (estilo Unix), lo cual permite usar las complejas líneas de comandos de este libro. Si por cualquier razón se necesitara usar la shell nativa de Windows, la consola de línea de comandos, se han de usar las comillas dobles en vez de las simples (para parámetros que contengan espacios) y se deben entrecomillar los parámetros terminándolos con el acento circunflejo (^) si están al final de la línea, ya que en Windows es uno de los símbolos de continuación.
  • 44. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero USUARIO Tu identidad Lo primero que deberías hacer cuando instalas Git es establecer tu nombre de usuario y dirección de correo electrónico. Esto es importante porque las confirmaciones de cambios (commits) en Git usan esta información, y es introducida de manera inmutable en los commits que envías: $ git config --global user.name “Pepe Martin" $ git config --global user.email pepe@gmail.com
  • 45. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero USUARIO Ahora que tu identidad está configurada, puedes elegir el editor de texto por defecto que se utilizará cuando Git necesite que introduzcas un mensaje. Si no indicas nada, Git usa el editor por defecto de tu sistema, que generalmente es Vi o Vim. Si quieres usar otro editor de texto, como nano, puedes hacer lo siguiente: $ git config --global core.editor nano
  • 46. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero USUARIO Tu herramienta de diferencias Otra opción útil que puede que quieras configurar es la herramienta de diferencias por defecto, usada para resolver conflictos de unión (merge). Digamos que quieres usar vimdiff: $ git config --global merge.tool vimdiff
  • 47. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero USUARIO Si quieres comprobar la configuración $ git config --list
  • 48. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero USUARIO Ayuda $ git help config
  • 49. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero FUNDAMENTOS DE GIT Inicializando un repositorio en un directorio existente Si estás empezando el seguimiento en Git de un proyecto existente, necesitas ir al directorio del proyecto y escribir: $ git init
  • 50. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero FUNDAMENTOS DE GIT Esto crea un nuevo subdirectorio llamado .git que contiene todos los archivos necesarios del repositorio —un esqueleto de un repositorio Git. Todavía no hay nada en tu proyecto que esté bajo seguimiento.
  • 51. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero FUNDAMENTOS DE GIT Hemos creado un directorio proyectos/proyecto1 en /home/usuario con anterioridad $mkdir /home/usuario/proyectos/proyecto1
  • 52. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero FUNDAMENTOS DE GIT Si deseas empezar a controlar versiones de archivos existentes (a diferencia de un directorio vacío), probablemente deberías comenzar el seguimiento de esos archivos y hacer una confirmación inicial. Puedes conseguirlo con unos pocos comandos git add para especificar qué archivos quieres controlar, seguidos de un commit para confirmar los cambios: $ git add *.py $ git add README $ git commit –m 'versión inicial del proyecto'
  • 53. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero FUNDAMENTOS DE GIT
  • 54. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero FUNDAMENTOS DE GIT Ahora traemos 3 archivos Python desde el puente dado1.py dado2.py dado3.py
  • 55. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero FUNDAMENTOS DE GIT Ahora traemos 3 archivos Python desde el puente dado1.py dado2.py dado3.py
  • 56. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero FUNDAMENTOS DE GIT Para colaborar con un proyecto git, lo que hay que hacer es un clone. $>git clone git://github.com/schacon/grit.git Si queremos darle otro nombre al proyecto. $ git clone git://github.com/schacon/grit.git miproyectogrit
  • 57. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero FUNDAMENTOS DE GIT Para colaborar con un proyecto git, lo que hay que hacer es un clone. Por ejemplo también El ejemplo anterior usa el protocolo git:// http(s):// usuario@servidor:/ruta.git http(s):// o usuario@servidor:/ruta.git,
  • 58. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero IMPORTAR UN PROYECTO- CLONE En este caso Git clone usuario@192.168.1.140:/home/usuario/proyectos/proyecto profe/.git http(s):// o usuario@servidor:/ruta.git,
  • 59. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero GUARDAR ESTADO NUEVO DE TU PROYECTO Tienes un repositorio Git completo, y una copia de trabajo de los archivos de ese proyecto. Necesitas hacer algunos cambios, y confirmar instantáneas de esos cambios a tu repositorio cada vez que el proyecto alcance un estado que desees grabar. http(s):// o usuario@servidor:/ruta.git,
  • 60. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero GUARDAR ESTADO NUEVO DE TU PROYECTO Recuerda que cada archivo de tu directorio de trabajo puede estar dos estados: bajo seguimiento (tracked), o sin seguimiento (untracked). Los archivos bajo seguimiento existían en la última instantánea; pueden estar sin modificaciones, modificados, o preparados. Los archivos sin seguimiento son todos los demás — cualquiera que no estuviese en tu última instantánea ni está en tu área de preparación—. La primera vez que clonas, todos tus archivos estarán bajo seguimiento y sin modificaciones, ya que los acabas de copiar y no has modificado nada.
  • 61. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero GUARDAR ESTADO NUEVO DE TU PROYECTO A medida que editas archivos, Git los ve como modificados, porque los has cambiado desde tu última confirmación. Preparas estos archivos modificados y luego confirmas todos los cambios que hayas preparado, y el ciclo se repite
  • 62. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero GUARDAR ESTADO NUEVO DE TU PROYECTO
  • 63. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Ver el estado $>git status # On branch master nothing to commit, working directory clean Esto significa que todo ok, sin cambios
  • 64. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Ignorar archivos A menudo tendrás un tipo de archivos que no quieras que Git añada automáticamente o te muestre como no versionado. Suelen ser archivos generados automáticamente, como archivos de log, o archivos generados por tu compilador. Para estos casos puedes crear un archivo llamado .gitignore, en el que listas los patrones de nombres que deseas que sean ignorados. He aquí un archivo .gitignore de ejemplo: $ cat .gitignore *.[oa] *~ Ignorando archivos A menudo tendrás un tipo de archivos que no quieras que Git añada automáticamente o te muestre como no versionado. Suelen ser archivos generados automáticam $ cat .gitignore *.[oa] *~
  • 65. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Ignorar archivos # a comment – this is ignored # no .a files *.a # but do track lib.a, even though you're ignoring .a files above !lib.a # only ignore the root TODO file, not subdir/TODO /TODO # ignore all files in the build/ directory build/ # ignore doc/notes.txt, but not doc/server/arch.txt doc/*.txt # ignore all .txt files in the doc/ directory doc/**/*.txt
  • 66. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero DIFERENCIAS DE ARCHIVOS Para saber las diferencias de Archivos que has cambiado, dispones del comando $>git diff --staged Compara la versión estable, con la ultima preparada Ignorando archivos A menudo tendrás un tipo de archivos que no quieras que Git añada automáticamente o te muestre como no versionado. Suelen ser archivos generados automáticam $ cat .gitignore *.[oa] *~
  • 67. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero DIFERENCIAS DE ARCHIVOS Tienes que haber puesto git add para que se incluyan para la siguiente confirmación. Ignorando archivos A menudo tendrás un tipo de archivos que no quieras que Git añada automáticamente o te muestre como no versionado. Suelen ser archivos generados automáticam $ cat .gitignore *.[oa] *~
  • 68. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero CONFIRMACION DE ARCHIVOS Para confirmar LOS CAMBIOS EN EL SERVIDOR, REALIZAREMOS $>git commit Cuando haces el git commit te pregunta que “Cadena de texto a escribir para validar” Escribes una cadena y guardas Posteriormente se guardan los cambios validados en local. Si quieres publicarlos se hará con “git push” Ignorando archivos A menudo tendrás un tipo de archivos que no quieras que Git añada automáticamente o te muestre como no versionado. Suelen ser archivos generados automáticam $ cat .gitignore *.[oa] *~
  • 69. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero CONFIRMACION DE ARCHIVOS Si quieres confirmar directamente sin hacer el git add $>git commit –a –m ‘Nuevos cambios’ Cuando haces el git commit te pregunta que “Cadena de texto a escribir para validar” Escribes una cadena y guardas Posteriormente se guardan los cambios validados en local. Si quieres publicarlos se hará con “git push” Ignorando archivos A menudo tendrás un tipo de archivos que no quieras que Git añada automáticamente o te muestre como no versionado. Suelen ser archivos generados automáticam $ cat .gitignore *.[oa] *~
  • 70. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero ELIMINACION DE ARCHIVOS Si quieres ELIMINAR un archivo de GIT $>git rm fichero $>git rm log/*.log Para eliminar un archivo de Git, debes eliminarlo de tus archivos bajo seguimiento (más concretamente, debes eliminarlo de tu área de preparación), y después confirmar. El comando git rm se encarga de eso, y también elimina el archivo de tu directorio de trabajo, para que no lo veas entre los archivos sin seguimiento. Con el parámetro –f se fuerza la eliminación
  • 71. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero ELIMINACION DE ARCHIVOS Si quieres eliminar el archivo del seguimiento de Git, pero que siga en el área de trabajo $>git rm --cached readme.txt
  • 72. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero RENOMBRAR ARCHIVOS $ git mv FICHERO_VIEJO_NOMBRE FICHERO_NUEVO_NOMBRE
  • 73. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Proyecto Para pruebas git clone git://github.com/schacon/simplegit-progit.git Probar después el “$>git log” para ver la secuencia de commits sobre el proyecto. Aparecen en orden inverso $>git log –p -2 -p muestra los mensajes -2 muestra los dos últimos commits
  • 74. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Para visualizar el log más fácil Gitk
  • 75. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Para visualizar el log más fácil Si haces un commit y por ejemplo te has dejado un fichero $ git commit -m ‘Commit inicial del martes 15’ $ git add fichero_olvidado $ git commit –amend Estos tres comandos acabarán convirtiéndose en una única confirmación —la segunda confirmación reemplazará los resultados de la primera
  • 76. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Para sacar del área de preparacion Preparas 2 archivos y quieres quitar uno $>git add fichero1 $>git add fichero2 $> git status  Están los 2 ficheros $>git reset HEAD fichero2 $git status  Solo estará el fichero1 ahora
  • 77. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Para volver a la antigua versión de un archivo $>git checkout -- fichero.txt Volverá a la versión validada ultima de fichero.txt
  • 78. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero TRABAJAR CON REPOSITORIOS REMOTOS
  • 79. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Con repositorios remotos Puedes tener varios, Cada uno de los cuales puede ser de sólo lectura, o de lectura/escritura, según los permisos que tengas. Colaborar con otros implica gestionar estos repositorios remotos, y mandar (push) y recibir (pull) datos de ellos
  • 80. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Con repositorios remotos Para saber los remotos, hacemos git remote Si no sale nada, estamos en el servidor Si sale origin (Es el servidor del que clonamos. Por defecto) Si sale otra cosa, es el servidor del que clonamos $ git remote -v
  • 81. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Con repositorios remotos Si hay más de un remoto, se listan todos: (Pero solo se puede enviar al remoto origen)
  • 82. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Añadir Repositorios Remotos Para añadir un nuevo repositorio Git remoto, asignándole un nombre con el que referenciarlo fácilmente, ejecuta git remote add [nombre] [url]:
  • 83. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Enviar Info al servidor $>git push origin master Manda la información del Proyecto principal (master) al Repositorio origin
  • 84. Control de Versiones Programación de Sistemas IFCT0609 Profesor: Manel Montero Enviar Info al servidor $>git push origin master Este comando funciona únicamente si has clonado de un servidor en el que tienes permiso de escritura, y nadie ha enviado información mientras tanto. Si tú y otra persona clonais a la vez, y él envía su información y luego envías tú la tuya, tu envío será rechazado. Tendrás que bajarte primero su trabajo e incorporarlo en el tuyo para que se te permita hacer un envío. para ver en detalle cómo enviar a servidores remotos.
  • 85. FIN Gracias por la atención !!! Profesor: Manel Montero Gracias por la atención.