SlideShare a Scribd company logo
1 of 44
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

More Related Content

What's hot

What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020Noa Harel
 
Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to GitlabJulien Pivotto
 
Git Tutorial
Git TutorialGit Tutorial
Git TutorialMDLicht
 
Free GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOpsFree GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOpsWeaveworks
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash CourseNilay Binjola
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notesglen_a_smith
 
git, 이해부터 활용까지
git, 이해부터 활용까지git, 이해부터 활용까지
git, 이해부터 활용까지jylee1229
 
Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...SlideTeam
 
MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)Olivier DASINI
 
GitOps is the best modern practice for CD with Kubernetes
GitOps is the best modern practice for CD with KubernetesGitOps is the best modern practice for CD with Kubernetes
GitOps is the best modern practice for CD with KubernetesVolodymyr Shynkar
 
GitOps - Operation By Pull Request
GitOps - Operation By Pull RequestGitOps - Operation By Pull Request
GitOps - Operation By Pull RequestKasper Nissen
 
Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Noa Harel
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDSunnyvale
 
Knative, Serverless on Kubernetes, and Openshift
Knative, Serverless on Kubernetes, and OpenshiftKnative, Serverless on Kubernetes, and Openshift
Knative, Serverless on Kubernetes, and OpenshiftChris Suszyński
 

What's hot (20)

Meetup 23 - 03 - Application Delivery on K8S with GitOps
Meetup 23 - 03 - Application Delivery on K8S with GitOpsMeetup 23 - 03 - Application Delivery on K8S with GitOps
Meetup 23 - 03 - Application Delivery on K8S with GitOps
 
What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020
 
Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to Gitlab
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
 
Free GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOpsFree GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOps
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
 
git, 이해부터 활용까지
git, 이해부터 활용까지git, 이해부터 활용까지
git, 이해부터 활용까지
 
Argocd up and running
Argocd up and runningArgocd up and running
Argocd up and running
 
Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...
 
MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)
 
GitOps is the best modern practice for CD with Kubernetes
GitOps is the best modern practice for CD with KubernetesGitOps is the best modern practice for CD with Kubernetes
GitOps is the best modern practice for CD with Kubernetes
 
GitOps - Operation By Pull Request
GitOps - Operation By Pull RequestGitOps - Operation By Pull Request
GitOps - Operation By Pull Request
 
Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
 
Advanced Git
Advanced GitAdvanced Git
Advanced Git
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
 
Knative, Serverless on Kubernetes, and Openshift
Knative, Serverless on Kubernetes, and OpenshiftKnative, Serverless on Kubernetes, and Openshift
Knative, Serverless on Kubernetes, and Openshift
 
CKA_1st.pptx
CKA_1st.pptxCKA_1st.pptx
CKA_1st.pptx
 

Viewers also liked

Introducción a git
Introducción a gitIntroducción a git
Introducción a gitKeopx
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a gitbetabeers
 
Introduccion a Git
Introduccion a GitIntroduccion a Git
Introduccion a GitStratebi
 
Mini-tutorial de git
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de gitAntonio Ognio
 
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
 

Viewers also liked (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 to Introducción 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.pdfMartinBonuccelli
 
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 gitJan Sanchez
 
Git & GitHub Part II
Git & GitHub Part IIGit & GitHub Part II
Git & GitHub Part IIMax Rodriguez
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando GitHugo 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 versionesAngel Armenta
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantesnscoder_mad
 
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/pushAlexis Lopez
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GITKeopx
 
Git para no gitters
Git para no gittersGit para no gitters
Git para no gittersRojomorgan
 
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úblicosIñaki Arenaza
 
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 colaborativoHernán Aguilera
 

Similar to 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
 
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
 
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
 

Recently uploaded

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 

Recently uploaded (11)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 

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