SlideShare una empresa de Scribd logo
Control de Versiones
Maximiliano A. Fontana - LinkedIn: @maxfontana90
¿Qué es GIT? ¿Y Github?
GIT es un software diseñado por Linus
Torvalds que permite la gestión y el control de
versiones de una aplicación Software. Esta se
encuentra disponible en dos versiones:
● Versión CLIENTE.
● Versión SERVIDOR.
¿Y Github?
GITHUB es un servicio en la nube cuyo fin es
alojar en sus servidores (Servidores GIT)
repositorios GIT de manera tal que un proyecto
pueda accederse en cualquier momento y
desde cualquier lugar. El servicio de GITHUB
es gratuito para todo repositorio de acceso
público. Repositorios privados requieren el
pago de un arancel.
Caracteristicas GITHUB
● Issue Tracking (Seguimiento de Incidencias).
● Soporte para Milestones (Hitos) y Labels (Etiquetas).
● Soporte para palabras claves en Commits
(closes,fixes).
● Soporte para discusiones detalladas acerca de todos y
cada uno de los commits realizados (por línea y por
commit en su totalidad).
● Ver Ejemplo
¿Existen Alternativas a GITHUB?
Conceptos Básicos
Conceptos
Repositorio: Se denomina al sitio donde se
almacenan los archivos del proyecto en forma
centralizada.
Commit: Consignación de un conjunto de
cambios. Un commit genera una nueva
versión. La misma tiene asociado un conjunto
de cambios.
Conceptos
Branch: Es una ramificación de un proyecto.
De forma ideal (los proyectos open-source de
hecho lo implementan) todo proyecto debería
tener cuatro bifurcaciones:
● Master
● Development
● Features
● Hotfixes
Conceptos
Master: Es la rama principal. Contiene el repositorio que
contiene la versión de la aplicación que se encuentra en
producción, por lo que debe estar siempre en un estado
“estable”.
Conceptos
Development: Es un ramificación de master. Es la rama
de integración de todas las nuevas funcionalidades. Luego
que se realice la integración y se corrijan los errores (en
caso de haber alguno), es decir que la rama se encuentre
en un estado “estable”, se puede hacer una fusión entre
las ramas de development y la rama master.
Conceptos
Features: Cada nueva funcionalidad se debe realizar en
una rama nueva, específica para esa funcionalidad. Estas
se deben sacar de development. Una vez que la
funcionalidad se encuentre “cocinada”, se hace un fusión
de la rama especifica de dicha funcionalidad sobre la rama
development, donde se integrará con las demás
funcionalidades.
Conceptos
Hotfix: Esta rama se utiliza para solucionar bugs que
surgen en la aplicación que se encuentra en producción,
por lo que se deben arreglar y publicar de forma urgente.
Es por ello, que son ramas que bifurcan de master. Una
vez corregido el error, se debe fusionar la misma sobre
master. Al final, para que no quede desactualizada, se
debe realizar el merge de master sobre development.
Conceptos
Merge: Es la fusión o mezcla de dos ramas del
proyecto.
Staging Area: Área de preparado de cambios.
Snapshot: Imagen/Fotocopia del estado actual
de un proyecto.
HEAD: Cabecera que apunta al último
snapshot (commit) realizado.
Funcionamiento de GIT
Acciones Básicas
Acciones Básicas
clone: Clonar un repositorio.
init: Crear un repositorio en forma local.
add: Agregar un documento a un área de
preparación de cambios (Staging area).
commit: Consignar un conjunto de cambios.
push: Subir al servidor el/los cambios
realizados (Una nueva versión).
Acciones Básicas
pull: Descargar y actualizar los cambios
realizados en el repositorio remoto.
checkout: Crear una nueva rama/bifurcación
del proyecto (repositorio) actual.
touch: Crear un archivo.
reset: Cambiar el estado del repositorio a un
estado anterior.
Acciones Básicas
diff: Ver los cambios realizados entre dos
versiones (Línea por línea).
log: Ver un log de los cambios realizados.
merge: Unificar, mezclar cambios realizados
en dos ramas y/o bifurcaciones del proyecto.
branch: Lista, crear o eliminar ramas y/o
bifurcaciones del proyecto.
Primeros Comandos
Primeros Comandos
Configurar datos del usuario:
~$ git config --global user.email “fperez@ejemplo.com”
~$ git config --global user.name “Fulanito Perez”
Iniciar un repositorio local:
~$ cd D:
~$ cd ruta/a/mi/proyecto
~$ git init
Primeros Comandos
Sincronizar repositorio remoto en el directorio
actual:
~$ git remote add origin http://url/del/repositorio/git.git
En este punto estamos listos para agregar
nuestros archivos y editarlos hasta que
estemos seguros de que deseamos sincronizar
el repositorio local con el remoto.
Primeros Comandos
El archivo .gitignore se utiliza para definir la
lista de recursos que no se deben incluir en la
lista de recursos “listos para agregarlos a la
staging area”.
Crear el archivo .gitignore:
~$ touch .gitignore
Realizar un Commit
Realizar un commit
Listar archivos ready to stage:
~$ git status
Agregar archivos de la lista a la staging area.
~$ git add mi_archivo.txt
Enviar commit con un comentario.
~$ git commit -m “Este es el primer commit.”
~$ git commit -am “Este es el primer commit.” // No
necesita del comando “git add”.
Realizar un commit
Listar la lista de commits realizados.
~$ git log | ~$ git log -n <numero_max_commits>
Resultado (Lista de N commits):
commit 6cdae7e324d73331ab7668a667a1cf3a8a6fa369
Author: Fulanito Perez <fperez@ejemplo.com>
Date: Wed Apr 30 10:17:54 2014 -0300
Agrego modificaciones sobre...
Push commits
Push Commits - Subir al repo.
Listar la lista de commits realizados.
~$ git push -u origin <<nombre_branch>>
Por defecto siempre se trabaja y se sincroniza
en el branch “master”.
~$ git push -u origin master
Push Commits - Subir al repo.
Listar la lista de commits realizados.
~$ git push -u origin <<nombre_branch>>
Por defecto siempre se trabaja y se sincroniza
en el branch “master”.
~$ git push -u origin master
Gestión Branches
Gestión Branches
Crear un branch (Ramificación):
~$ git branch <<nombre_branch>>
~$ git branch development //Ejemplo
Crear un branch y cambiar al mismo:
~$ git checkout -b <<nombre_branch>>
~$ git checkout -b development //Ejemplo
Gestión Branches
Listar todas las ramas locales:
~$ git branch //Locales.
~$ git branch -a //Locales y remotas.
Eliminar una rama:
~$ git branch -d <<nombre_rama>>
~$ git branch -d feature_ABMCliente //Ejemplo
Gestión Branches
Fusionar las ramas master y hotfix.
~$ git checkout master //cambiar a la rama master.
~$ git merge hotfix //Fusionar hotfix con master.
Eliminar una rama:
~$ git branch -d <<nombre_rama>>
~$ git branch -d feature_ABMCliente //Ejemplo
Deshacer Commits
Deshacer Commits
Deshacer un commit:
~$ git reset --soft HEAD^ // Mantiene estado archivos.
~$ git reset --hard HEAD^ // No mantiene estado archivos.
~$ git reset --soft HEAD~N// Deshace los últimos N
commits anteriores. Mantiene estado.
Crear Alias de comandos:
~$ git config --global alias.undo-commit 'reset --soft
HEAD^'
Deshacer Commits
E => Estado Archivos - Master => Cabecera HEAD actual.
A, B, C => Commits realizados.
~$ git reset --hard HEAD^ || ~$ git reset --soft HEAD^
(E)
(E)
A-B-C
A-B-C
↑ ↑
master
Deshacer Commits
Crear un alias para deshacer el último commit:
~$ git config --global alias.undo-commit 'reset --soft
HEAD^'
Links de Utilidad
Links de Utilidad
● http://try.github.com/
● http://nvie.com/posts/a-successful-git-
branching-model/
● http://weblog.masukomi.org/2008/07/12/han
dling-and-avoiding-conflicts-in-git

Más contenido relacionado

La actualidad más candente

Git for beginners
Git for beginnersGit for beginners
Git for beginners
Arulmurugan Rajaraman
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
Lee Hanxue
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control System
KMS Technology
 
Git and github
Git and githubGit and github
Git and github
Sayantika Banik
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow Introduction
David Paluy
 
Introducción a git y git hub
Introducción a git y git hubIntroducción a git y git hub
Introducción a git y git hub
Miguel Ascanio Gómez
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to git
Emanuele Olivetti
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
Md. Ahsan Habib Nayan
 
Git.pptx
Git.pptxGit.pptx
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagrams
Dilum Navanjana
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
Sven Peters
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Rueful Robin
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
Fran García
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
Leonardo Marcelino
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
Hélio Medeiros
 
Understanding GIT and Version Control
Understanding GIT and Version ControlUnderstanding GIT and Version Control
Understanding GIT and Version Control
Sourabh Sahu
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
Danilo Pinotti
 
Git best practices workshop
Git best practices workshopGit best practices workshop
Git best practices workshop
Otto Kekäläinen
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
Bismarck Gomes
 

La actualidad más candente (20)

Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control System
 
Git and github
Git and githubGit and github
Git and github
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow Introduction
 
Introducción a git y git hub
Introducción a git y git hubIntroducción a git y git hub
Introducción a git y git hub
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to git
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
Git.pptx
Git.pptxGit.pptx
Git.pptx
 
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagrams
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Understanding GIT and Version Control
Understanding GIT and Version ControlUnderstanding GIT and Version Control
Understanding GIT and Version Control
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Git best practices workshop
Git best practices workshopGit best practices workshop
Git best practices workshop
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 

Destacado

Minicurso Git
Minicurso GitMinicurso Git
Minicurso Git
Bruno Orlandi
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
Keopx
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
betabeers
 
Introduccion a Git
Introduccion a GitIntroduccion a Git
Introduccion a Git
Stratebi
 
Mini-tutorial de git
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de git
Antonio Ognio
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
Pedro Hernández
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
HubSpot
 

Destacado (7)

Minicurso Git
Minicurso GitMinicurso Git
Minicurso Git
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
Introduccion a Git
Introduccion a GitIntroduccion a Git
Introduccion a Git
 
Mini-tutorial de git
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de git
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
 

Similar a Introducción a GIT

Intro a GIT
Intro a GITIntro a GIT
GIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdfGIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdf
MartinBonuccelli
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
Mariano Kfuri
 
Flujo de trabajo básico con git
Flujo de trabajo básico con gitFlujo de trabajo básico con git
Flujo de trabajo básico con git
Jan Sanchez
 
Git & GitHub Part II
Git & GitHub Part IIGit & GitHub Part II
Git & GitHub Part II
Max Rodriguez
 
Control de versiones con Git
Control de versiones con GitControl de versiones con Git
Control de versiones con Git
Daniel Salas Denegri
 
Un modelo exitoso para git
Un modelo exitoso para gitUn modelo exitoso para git
Un modelo exitoso para git
Miguel Angel Piña Avelino
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando Git
Hugo Gilmar Erazo
 
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
Angel Armenta
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantes
nscoder_mad
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
Nelson Manuel Ordaz Yglesias
 
Más allá de Git add/commit/push
Más allá de Git add/commit/pushMás allá de Git add/commit/push
Más allá de Git add/commit/push
Alexis Lopez
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
Keopx
 
Git para no gitters
Git para no gittersGit para no gitters
Git para no gitters
Rojomorgan
 
Uso de git para el mantenimiento de parches locales o públicos
Uso de git para el mantenimiento  de parches locales o públicosUso de git para el mantenimiento  de parches locales o públicos
Uso de git para el mantenimiento de parches locales o públicos
Iñaki Arenaza
 
Git.manual.usuario
Git.manual.usuarioGit.manual.usuario
Git.manual.usuario
Henry Jiménez Sánchez
 
gitflow
gitflowgitflow
Versionando proyectos con Git, desarrollo de software colaborativo
Versionando proyectos con Git, desarrollo de software colaborativoVersionando proyectos con Git, desarrollo de software colaborativo
Versionando proyectos con Git, desarrollo de software colaborativo
Hernán Aguilera
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y Github
Javier Novoa Cataño
 

Similar a Introducción a GIT (20)

Intro a GIT
Intro a GITIntro a GIT
Intro a GIT
 
GIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdfGIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdf
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
Flujo de trabajo básico con git
Flujo de trabajo básico con gitFlujo de trabajo básico con git
Flujo de trabajo básico con git
 
Git & GitHub Part II
Git & GitHub Part IIGit & GitHub Part II
Git & GitHub Part II
 
Control de versiones con Git
Control de versiones con GitControl de versiones con Git
Control de versiones con Git
 
Un modelo exitoso para git
Un modelo exitoso para gitUn modelo exitoso para git
Un modelo exitoso para git
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando Git
 
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
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantes
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
 
Más allá de Git add/commit/push
Más allá de Git add/commit/pushMás allá de Git add/commit/push
Más allá de Git add/commit/push
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
 
Git para no gitters
Git para no gittersGit para no gitters
Git para no gitters
 
Git - Gitlab
Git - GitlabGit - Gitlab
Git - Gitlab
 
Uso de git para el mantenimiento de parches locales o públicos
Uso de git para el mantenimiento  de parches locales o públicosUso de git para el mantenimiento  de parches locales o públicos
Uso de git para el mantenimiento de parches locales o públicos
 
Git.manual.usuario
Git.manual.usuarioGit.manual.usuario
Git.manual.usuario
 
gitflow
gitflowgitflow
gitflow
 
Versionando proyectos con Git, desarrollo de software colaborativo
Versionando proyectos con Git, desarrollo de software colaborativoVersionando proyectos con Git, desarrollo de software colaborativo
Versionando proyectos con Git, desarrollo de software colaborativo
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y Github
 

Último

Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
JuanPrez962115
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
44652726
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
cj3806354
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
jjfch3110
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 

Último (20)

Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 

Introducción a GIT

  • 1. Control de Versiones Maximiliano A. Fontana - LinkedIn: @maxfontana90
  • 2. ¿Qué es GIT? ¿Y Github? GIT es un software diseñado por Linus Torvalds que permite la gestión y el control de versiones de una aplicación Software. Esta se encuentra disponible en dos versiones: ● Versión CLIENTE. ● Versión SERVIDOR.
  • 3. ¿Y Github? GITHUB es un servicio en la nube cuyo fin es alojar en sus servidores (Servidores GIT) repositorios GIT de manera tal que un proyecto pueda accederse en cualquier momento y desde cualquier lugar. El servicio de GITHUB es gratuito para todo repositorio de acceso público. Repositorios privados requieren el pago de un arancel.
  • 4.
  • 5. Caracteristicas GITHUB ● Issue Tracking (Seguimiento de Incidencias). ● Soporte para Milestones (Hitos) y Labels (Etiquetas). ● Soporte para palabras claves en Commits (closes,fixes). ● Soporte para discusiones detalladas acerca de todos y cada uno de los commits realizados (por línea y por commit en su totalidad). ● Ver Ejemplo
  • 7.
  • 9. Conceptos Repositorio: Se denomina al sitio donde se almacenan los archivos del proyecto en forma centralizada. Commit: Consignación de un conjunto de cambios. Un commit genera una nueva versión. La misma tiene asociado un conjunto de cambios.
  • 10. Conceptos Branch: Es una ramificación de un proyecto. De forma ideal (los proyectos open-source de hecho lo implementan) todo proyecto debería tener cuatro bifurcaciones: ● Master ● Development ● Features ● Hotfixes
  • 11.
  • 12. Conceptos Master: Es la rama principal. Contiene el repositorio que contiene la versión de la aplicación que se encuentra en producción, por lo que debe estar siempre en un estado “estable”.
  • 13. Conceptos Development: Es un ramificación de master. Es la rama de integración de todas las nuevas funcionalidades. Luego que se realice la integración y se corrijan los errores (en caso de haber alguno), es decir que la rama se encuentre en un estado “estable”, se puede hacer una fusión entre las ramas de development y la rama master.
  • 14. Conceptos Features: Cada nueva funcionalidad se debe realizar en una rama nueva, específica para esa funcionalidad. Estas se deben sacar de development. Una vez que la funcionalidad se encuentre “cocinada”, se hace un fusión de la rama especifica de dicha funcionalidad sobre la rama development, donde se integrará con las demás funcionalidades.
  • 15. Conceptos Hotfix: Esta rama se utiliza para solucionar bugs que surgen en la aplicación que se encuentra en producción, por lo que se deben arreglar y publicar de forma urgente. Es por ello, que son ramas que bifurcan de master. Una vez corregido el error, se debe fusionar la misma sobre master. Al final, para que no quede desactualizada, se debe realizar el merge de master sobre development.
  • 16. Conceptos Merge: Es la fusión o mezcla de dos ramas del proyecto. Staging Area: Área de preparado de cambios. Snapshot: Imagen/Fotocopia del estado actual de un proyecto. HEAD: Cabecera que apunta al último snapshot (commit) realizado.
  • 18.
  • 19.
  • 20.
  • 22. Acciones Básicas clone: Clonar un repositorio. init: Crear un repositorio en forma local. add: Agregar un documento a un área de preparación de cambios (Staging area). commit: Consignar un conjunto de cambios. push: Subir al servidor el/los cambios realizados (Una nueva versión).
  • 23. Acciones Básicas pull: Descargar y actualizar los cambios realizados en el repositorio remoto. checkout: Crear una nueva rama/bifurcación del proyecto (repositorio) actual. touch: Crear un archivo. reset: Cambiar el estado del repositorio a un estado anterior.
  • 24. Acciones Básicas diff: Ver los cambios realizados entre dos versiones (Línea por línea). log: Ver un log de los cambios realizados. merge: Unificar, mezclar cambios realizados en dos ramas y/o bifurcaciones del proyecto. branch: Lista, crear o eliminar ramas y/o bifurcaciones del proyecto.
  • 26. Primeros Comandos Configurar datos del usuario: ~$ git config --global user.email “fperez@ejemplo.com” ~$ git config --global user.name “Fulanito Perez” Iniciar un repositorio local: ~$ cd D: ~$ cd ruta/a/mi/proyecto ~$ git init
  • 27. Primeros Comandos Sincronizar repositorio remoto en el directorio actual: ~$ git remote add origin http://url/del/repositorio/git.git En este punto estamos listos para agregar nuestros archivos y editarlos hasta que estemos seguros de que deseamos sincronizar el repositorio local con el remoto.
  • 28. Primeros Comandos El archivo .gitignore se utiliza para definir la lista de recursos que no se deben incluir en la lista de recursos “listos para agregarlos a la staging area”. Crear el archivo .gitignore: ~$ touch .gitignore
  • 30. Realizar un commit Listar archivos ready to stage: ~$ git status Agregar archivos de la lista a la staging area. ~$ git add mi_archivo.txt Enviar commit con un comentario. ~$ git commit -m “Este es el primer commit.” ~$ git commit -am “Este es el primer commit.” // No necesita del comando “git add”.
  • 31. Realizar un commit Listar la lista de commits realizados. ~$ git log | ~$ git log -n <numero_max_commits> Resultado (Lista de N commits): commit 6cdae7e324d73331ab7668a667a1cf3a8a6fa369 Author: Fulanito Perez <fperez@ejemplo.com> Date: Wed Apr 30 10:17:54 2014 -0300 Agrego modificaciones sobre...
  • 33. Push Commits - Subir al repo. Listar la lista de commits realizados. ~$ git push -u origin <<nombre_branch>> Por defecto siempre se trabaja y se sincroniza en el branch “master”. ~$ git push -u origin master
  • 34. Push Commits - Subir al repo. Listar la lista de commits realizados. ~$ git push -u origin <<nombre_branch>> Por defecto siempre se trabaja y se sincroniza en el branch “master”. ~$ git push -u origin master
  • 36. Gestión Branches Crear un branch (Ramificación): ~$ git branch <<nombre_branch>> ~$ git branch development //Ejemplo Crear un branch y cambiar al mismo: ~$ git checkout -b <<nombre_branch>> ~$ git checkout -b development //Ejemplo
  • 37. Gestión Branches Listar todas las ramas locales: ~$ git branch //Locales. ~$ git branch -a //Locales y remotas. Eliminar una rama: ~$ git branch -d <<nombre_rama>> ~$ git branch -d feature_ABMCliente //Ejemplo
  • 38. Gestión Branches Fusionar las ramas master y hotfix. ~$ git checkout master //cambiar a la rama master. ~$ git merge hotfix //Fusionar hotfix con master. Eliminar una rama: ~$ git branch -d <<nombre_rama>> ~$ git branch -d feature_ABMCliente //Ejemplo
  • 40. Deshacer Commits Deshacer un commit: ~$ git reset --soft HEAD^ // Mantiene estado archivos. ~$ git reset --hard HEAD^ // No mantiene estado archivos. ~$ git reset --soft HEAD~N// Deshace los últimos N commits anteriores. Mantiene estado. Crear Alias de comandos: ~$ git config --global alias.undo-commit 'reset --soft HEAD^'
  • 41. Deshacer Commits E => Estado Archivos - Master => Cabecera HEAD actual. A, B, C => Commits realizados. ~$ git reset --hard HEAD^ || ~$ git reset --soft HEAD^ (E) (E) A-B-C A-B-C ↑ ↑ master
  • 42. Deshacer Commits Crear un alias para deshacer el último commit: ~$ git config --global alias.undo-commit 'reset --soft HEAD^'
  • 44. Links de Utilidad ● http://try.github.com/ ● http://nvie.com/posts/a-successful-git- branching-model/ ● http://weblog.masukomi.org/2008/07/12/han dling-and-avoiding-conflicts-in-git