SlideShare una empresa de Scribd logo
Git & Github II
Max Cruz
https://www.linkedin.com/in/max-cruz/
https://github.com/maxcruz
Agenda
● Repaso
● GitFlow
● Propuesta
● Instalando Git
● Configuración
● Comandos básicos
● Obtener ayuda
● Ejercicio
Repaso
● Git & GitHub
● Breve historia de Git
● ¿Por qué Git/GitHub?
● Contribuyendo a un proyecto (Forking)
● Trabajo en paralelo (Branching)
● Construyendo el cambio (Commit)
● Entregar respetuosamente (Pull Request)
● Calidad en el código (Code Review)
● Uniendo el trabajo (Merge)
Git: The Three States
Git tiene tres estados principales en los que pueden
residir tus archivos:
Committed significa que los datos se almacenan de
forma segura en su base de datos local.
Modified significa que ha cambiado el archivo pero
aún no lo ha enviado a su base de datos.
Staged significa que ha marcado un archivo
modificado en su versión actual para ir a su próximo
commit snapshot.
GitFlow
Define un modelo estricto de ramificaciones (branches) diseñado
entorno a las publicaciones de un proyecto. Esto proporciona un marco
de trabajo robusto para manejar grandes proyectos.
● Ideal para proyectos con flujos de publicación cíclicos
● Asigna roles específicos a cada branch
● Define cómo y cuándo debería de interactuar con cada rama
Master & Develop
Features
Release
Hotfix
Propuesta: Forking / Feature Branch
Le da a cada desarrollador su propio repositorio del lado del servidor.
Esto significa que cada colaborador no tiene uno, sino dos repositorios
Git: uno privado y uno público compartido.
● Es el modelo más usado en proyectos open-source
● Permite tener una versión simplificada de GitFlow
● Las contribuciones se pueden integrar por separado
● Evitar distribuir accesos de escritura en el repositorio principal
Fork / Feature Branch
Fork / Feature Branch
Actualizar master con los
cambios en upstream
Master
(Fork)
Feature
Actualizar master
nuevamente para obtener
los cambios integrados
Push del feature branch
a origin y PR a master
en upstream
Instalando Git
Linux
Mediante la herramienta básica
de administración de paquetes
que trae tu distribución
# pacman -Syu git
# apt-get install git
# yum install git
OSX
En Mavericks (10.9) o superior
puedes hacer esto desde el
Terminal si intentas ejecutar git
por primera vez. Si no lo tienes
instalado, te preguntará si deseas
instalarlo.
http://git-scm.com/download/mac
Windows
Descargar el instalador, abrir el
archivo .exe con permisos de
administración y seguir las
instrucciones del asistente.
http://git-scm.com/download/win
https://github.com/robbyrussell/oh-my-zsh
Linux / OSX
https://github.com/dahlbyk/posh-git
Windows
Configuración
1. Archivo /etc/gitconfig: Contiene valores para todos los usuarios del sistema y todos sus
repositorios. Si pasas la opción --system a git config, lee y escribe específicamente en este
archivo.
2. Archivo ~/.gitconfig o ~/.config/git/config: Este archivo es específico a tu usuario. Puedes
hacer que Git lea y escriba específicamente en este archivo pasando la opción --global.
3. Archivo config en el directorio de Git (es decir, .git/config) del repositorio que estés
utilizando actualmente: Este archivo es específico al repositorio actual.
Configuración: Git
Identidad:
$ git config --global user.name "Max Cruz"
$ git config --global user.email max.raul@gmail.com
Editor:
$ git config --global core.editor vim
Color:
$ git config --global color.ui true
Consultar:
$ git config --list
Configuración: Git
No hacer backup al resolver conflictos:
$ git config --global mergetool.keepBackup false
Herramienta para ver diferencias:
$ git config --global diff.tool vimdiff
Herramienta para fusionar:
$ git config --global merge.tool vimdiff
Consultar:
$ git config --list
Configuración: GitHub
Paquetes:
# pacman -Ss openssh git xclip
Llave SSH:
$ ssh-keygen -t rsa -b 4096
Agregar la llave al ssh-agent:
$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_rsa
Configuración: GitHub
Copiar la llave SSH:
$ xclip -sel clip <
~/.ssh/id_rsa.pub
Pegar la llave en la cuenta de GitHub
Settings -> SSH keys -> Add SSH key
Probar la conexión:
$ ssh -T git@github.com
Comandos básicos
Crear un nuevo repositorio:
$ git init
Clonar un repositorio remoto:
$ git clone username@host:/path/to/repository
Agregar un origen remoto al repositorio :
$ git remote add upstream username@host:/path/to/repository
Sincronizar las ramas remotas:
$ git fetch --all
Cambiar de rama:
$ git checkout master
Crear una nueva rama y cambiarnos a ella:
$ git checkout -b feature_x
Subir una rama al origen:
$ git push origin feature_x
Eliminar una rama local:
$ git branch -d feature_x
Eliminar una rama en el origen:
$ git push -d origin feature_x
Listar las ramas:
$ git branch
Consultar el estado de los archivos:
$ git status
Agregar un archivo al siguiente commit:
$ git add archivo.txt
Quitar un archivo del siguiente commit:
$ git reset archivo.txt
Hacer commit local de los archivos que he agregado:
$ git commit -m "Commit message"
Subir los cambios al repositorio:
$ git push origin feature_x
Actualizar los cambios del branch:
$ git pull upstream master
Fusionar una rama (Git intenta hacer merge automático):
$ git merge master
Resolver conflictos:
$ git mergetool
Ver conflictos entre ramas:
$ git diff source_branch target_branch
Luego de resolver los conflictos se deben agregar los archivos modificados y hacer un
commit con los resultados de la fusión.
Agregar un archivo al último commit:
$ git commit -m “Initial Commit”
$ git add forgotten_file.txt
$ git commit --amend
Deshacer el último commit conservando los cambios:
$ git reset --soft HEAD^
Deshacer el último commit (CUIDADO):
$ git reset --hard HEAD^
Quitar un archivo del repositorio sin eliminarlo:
$ git rm --cached archivo.txt
Log de cambios con gráfico ASCII o con el detalle de los archivos:
$ git log --graph --oneline --decorate --all
$ git log --name-status
Agregar archivos de forma interactiva:
$ git add -i
Poner un TAG a un commit específico:
$ git tag 1.0.0 1b2e1d63ff
Mover los archivos agregados pendientes de commit a un branch distinto:
$ git stash
$ git checkout -b branch_name
$ git stash apply
Obtener ayuda
Ejercicio
https://github.com/jlord/git-it-electron

Más contenido relacionado

La actualidad más candente

PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHubdrsevilla
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
Jose Emilio Labra Gayo
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
Sergio Rus
 
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
 
Gestión de configuración distribuída para la plataforma de Canaima
Gestión de configuración distribuída para la plataforma de Canaima Gestión de configuración distribuída para la plataforma de Canaima
Gestión de configuración distribuída para la plataforma de Canaima
Ernesto Crespo
 
Git training
Git trainingGit training
Git training
Joel Mamani Lopez
 
Uso practico de git
Uso practico de gitUso practico de git
Uso practico de git
Keopx
 
Git y drupal
Git y drupalGit y drupal
Git y drupal
Juampy NR
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
Manuel Ceron
 
Respaldos con Rsync
Respaldos con RsyncRespaldos con Rsync
Respaldos con Rsync
Carlos Antonio Leal Saballos
 
Aprendiendo GIT
Aprendiendo GITAprendiendo GIT
Aprendiendo GIT
InterGraphicDESIGNS
 
Jesús Amieiro: Git para el día a día
Jesús Amieiro: Git para el día a díaJesús Amieiro: Git para el día a día
Jesús Amieiro: Git para el día a día
PHP Vigo
 
Configurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideConfigurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ide
ferosorno
 
Deploy gitlab vía ftp
Deploy gitlab vía ftp Deploy gitlab vía ftp
Deploy gitlab vía ftp
MizaelMartinez2
 
Git.manual.usuario
Git.manual.usuarioGit.manual.usuario
Git.manual.usuario
Henry Jiménez Sánchez
 
Dependency Managers iOS
Dependency Managers iOSDependency Managers iOS
Dependency Managers iOS
Angel Jesse Morales Karam
 
Dependency Managers
Dependency ManagersDependency Managers
Dependency Managers
NSCoder Mexico
 

La actualidad más candente (20)

PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHub
 
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
 
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
 
Gestión de configuración distribuída para la plataforma de Canaima
Gestión de configuración distribuída para la plataforma de Canaima Gestión de configuración distribuída para la plataforma de Canaima
Gestión de configuración distribuída para la plataforma de Canaima
 
Git training
Git trainingGit training
Git training
 
Uso practico de git
Uso practico de gitUso practico de git
Uso practico de git
 
Git y drupal
Git y drupalGit y drupal
Git y drupal
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Respaldos con Rsync
Respaldos con RsyncRespaldos con Rsync
Respaldos con Rsync
 
Aprendiendo GIT
Aprendiendo GITAprendiendo GIT
Aprendiendo GIT
 
Jesús Amieiro: Git para el día a día
Jesús Amieiro: Git para el día a díaJesús Amieiro: Git para el día a día
Jesús Amieiro: Git para el día a día
 
Configurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideConfigurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ide
 
Deploy gitlab vía ftp
Deploy gitlab vía ftp Deploy gitlab vía ftp
Deploy gitlab vía ftp
 
Git.manual.usuario
Git.manual.usuarioGit.manual.usuario
Git.manual.usuario
 
Git para frontends
Git para frontendsGit para frontends
Git para frontends
 
Dependency Managers iOS
Dependency Managers iOSDependency Managers iOS
Dependency Managers iOS
 
Dependency Managers
Dependency ManagersDependency Managers
Dependency Managers
 
Mercurial
MercurialMercurial
Mercurial
 
Tarea 4
Tarea 4Tarea 4
Tarea 4
 

Similar a Git & GitHub Part II

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
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
Keopx
 
Intro a GIT
Intro a GITIntro a GIT
Git y github básico
Git y github básicoGit y github básico
Git y github básico
Nelson Manuel Ordaz Yglesias
 
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
 
Git
GitGit
GuiaPrincipiantesGitHubrfuenzalidadev.pptx
GuiaPrincipiantesGitHubrfuenzalidadev.pptxGuiaPrincipiantesGitHubrfuenzalidadev.pptx
GuiaPrincipiantesGitHubrfuenzalidadev.pptx
fuenzalidarodrigo
 
github-git-cheat-sheet.pdf
github-git-cheat-sheet.pdfgithub-git-cheat-sheet.pdf
github-git-cheat-sheet.pdf
OMARALFREDOCARRASCAL1
 
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
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC
sidelab
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
Patxi Gortázar
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con git
ch1l3no
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
maxfontana90
 
Control de versiones
Control de versionesControl de versiones
Control de versiones
Joan Sebastián Ramírez Pérez
 
Git / Guía Básica
Git / Guía BásicaGit / Guía Básica
Git / Guía Básica
Juan Victor Minaya León
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
Mariano Kfuri
 
Curso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en Github
Carlos Huamaní
 
GITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionadosGITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionados
yuri460292
 
The Gift of Git [Español: La Palabra de Git]
The Gift of Git [Español: La Palabra de Git]The Gift of Git [Español: La Palabra de Git]
The Gift of Git [Español: La Palabra de Git]
Alfonso Felipe Cabargas Madrid
 

Similar a Git & GitHub Part II (20)

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
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
 
Intro a GIT
Intro a GITIntro a GIT
Intro a GIT
 
Git - Gitlab
Git - GitlabGit - Gitlab
Git - Gitlab
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
 
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
 
Git
GitGit
Git
 
GuiaPrincipiantesGitHubrfuenzalidadev.pptx
GuiaPrincipiantesGitHubrfuenzalidadev.pptxGuiaPrincipiantesGitHubrfuenzalidadev.pptx
GuiaPrincipiantesGitHubrfuenzalidadev.pptx
 
github-git-cheat-sheet.pdf
github-git-cheat-sheet.pdfgithub-git-cheat-sheet.pdf
github-git-cheat-sheet.pdf
 
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
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con git
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
Control de versiones
Control de versionesControl de versiones
Control de versiones
 
Git / Guía Básica
Git / Guía BásicaGit / Guía Básica
Git / Guía Básica
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
Curso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en Github
 
GITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionadosGITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionados
 
The Gift of Git [Español: La Palabra de Git]
The Gift of Git [Español: La Palabra de Git]The Gift of Git [Español: La Palabra de Git]
The Gift of Git [Español: La Palabra de Git]
 

Último

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
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
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
 
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
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Í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
 
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
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
(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
 
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
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
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
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
DanielErazoMedina
 
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
 
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
 

Último (20)

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
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
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
 
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
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.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...
 
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
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
(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
 
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
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
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
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
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
 
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
 

Git & GitHub Part II

  • 1. Git & Github II Max Cruz https://www.linkedin.com/in/max-cruz/ https://github.com/maxcruz
  • 2. Agenda ● Repaso ● GitFlow ● Propuesta ● Instalando Git ● Configuración ● Comandos básicos ● Obtener ayuda ● Ejercicio
  • 3. Repaso ● Git & GitHub ● Breve historia de Git ● ¿Por qué Git/GitHub? ● Contribuyendo a un proyecto (Forking) ● Trabajo en paralelo (Branching) ● Construyendo el cambio (Commit) ● Entregar respetuosamente (Pull Request) ● Calidad en el código (Code Review) ● Uniendo el trabajo (Merge)
  • 4. Git: The Three States Git tiene tres estados principales en los que pueden residir tus archivos: Committed significa que los datos se almacenan de forma segura en su base de datos local. Modified significa que ha cambiado el archivo pero aún no lo ha enviado a su base de datos. Staged significa que ha marcado un archivo modificado en su versión actual para ir a su próximo commit snapshot.
  • 5. GitFlow Define un modelo estricto de ramificaciones (branches) diseñado entorno a las publicaciones de un proyecto. Esto proporciona un marco de trabajo robusto para manejar grandes proyectos. ● Ideal para proyectos con flujos de publicación cíclicos ● Asigna roles específicos a cada branch ● Define cómo y cuándo debería de interactuar con cada rama
  • 10.
  • 11. Propuesta: Forking / Feature Branch Le da a cada desarrollador su propio repositorio del lado del servidor. Esto significa que cada colaborador no tiene uno, sino dos repositorios Git: uno privado y uno público compartido. ● Es el modelo más usado en proyectos open-source ● Permite tener una versión simplificada de GitFlow ● Las contribuciones se pueden integrar por separado ● Evitar distribuir accesos de escritura en el repositorio principal
  • 12. Fork / Feature Branch
  • 13. Fork / Feature Branch Actualizar master con los cambios en upstream Master (Fork) Feature Actualizar master nuevamente para obtener los cambios integrados Push del feature branch a origin y PR a master en upstream
  • 14. Instalando Git Linux Mediante la herramienta básica de administración de paquetes que trae tu distribución # pacman -Syu git # apt-get install git # yum install git OSX En Mavericks (10.9) o superior puedes hacer esto desde el Terminal si intentas ejecutar git por primera vez. Si no lo tienes instalado, te preguntará si deseas instalarlo. http://git-scm.com/download/mac Windows Descargar el instalador, abrir el archivo .exe con permisos de administración y seguir las instrucciones del asistente. http://git-scm.com/download/win
  • 16. Configuración 1. Archivo /etc/gitconfig: Contiene valores para todos los usuarios del sistema y todos sus repositorios. Si pasas la opción --system a git config, lee y escribe específicamente en este archivo. 2. Archivo ~/.gitconfig o ~/.config/git/config: Este archivo es específico a tu usuario. Puedes hacer que Git lea y escriba específicamente en este archivo pasando la opción --global. 3. Archivo config en el directorio de Git (es decir, .git/config) del repositorio que estés utilizando actualmente: Este archivo es específico al repositorio actual.
  • 17. Configuración: Git Identidad: $ git config --global user.name "Max Cruz" $ git config --global user.email max.raul@gmail.com Editor: $ git config --global core.editor vim Color: $ git config --global color.ui true Consultar: $ git config --list
  • 18. Configuración: Git No hacer backup al resolver conflictos: $ git config --global mergetool.keepBackup false Herramienta para ver diferencias: $ git config --global diff.tool vimdiff Herramienta para fusionar: $ git config --global merge.tool vimdiff Consultar: $ git config --list
  • 19. Configuración: GitHub Paquetes: # pacman -Ss openssh git xclip Llave SSH: $ ssh-keygen -t rsa -b 4096 Agregar la llave al ssh-agent: $ eval "$(ssh-agent -s)" $ ssh-add ~/.ssh/id_rsa
  • 20. Configuración: GitHub Copiar la llave SSH: $ xclip -sel clip < ~/.ssh/id_rsa.pub Pegar la llave en la cuenta de GitHub Settings -> SSH keys -> Add SSH key Probar la conexión: $ ssh -T git@github.com
  • 21. Comandos básicos Crear un nuevo repositorio: $ git init Clonar un repositorio remoto: $ git clone username@host:/path/to/repository Agregar un origen remoto al repositorio : $ git remote add upstream username@host:/path/to/repository Sincronizar las ramas remotas: $ git fetch --all Cambiar de rama: $ git checkout master
  • 22. Crear una nueva rama y cambiarnos a ella: $ git checkout -b feature_x Subir una rama al origen: $ git push origin feature_x Eliminar una rama local: $ git branch -d feature_x Eliminar una rama en el origen: $ git push -d origin feature_x Listar las ramas: $ git branch
  • 23. Consultar el estado de los archivos: $ git status Agregar un archivo al siguiente commit: $ git add archivo.txt Quitar un archivo del siguiente commit: $ git reset archivo.txt Hacer commit local de los archivos que he agregado: $ git commit -m "Commit message" Subir los cambios al repositorio: $ git push origin feature_x
  • 24. Actualizar los cambios del branch: $ git pull upstream master Fusionar una rama (Git intenta hacer merge automático): $ git merge master Resolver conflictos: $ git mergetool Ver conflictos entre ramas: $ git diff source_branch target_branch Luego de resolver los conflictos se deben agregar los archivos modificados y hacer un commit con los resultados de la fusión.
  • 25. Agregar un archivo al último commit: $ git commit -m “Initial Commit” $ git add forgotten_file.txt $ git commit --amend Deshacer el último commit conservando los cambios: $ git reset --soft HEAD^ Deshacer el último commit (CUIDADO): $ git reset --hard HEAD^ Quitar un archivo del repositorio sin eliminarlo: $ git rm --cached archivo.txt
  • 26. Log de cambios con gráfico ASCII o con el detalle de los archivos: $ git log --graph --oneline --decorate --all $ git log --name-status Agregar archivos de forma interactiva: $ git add -i Poner un TAG a un commit específico: $ git tag 1.0.0 1b2e1d63ff Mover los archivos agregados pendientes de commit a un branch distinto: $ git stash $ git checkout -b branch_name $ git stash apply