GIT

pablo hiyano

pablo.hiyano@globant.com

dax.pablo@globant.com

2 de agosto

  • Definiciones
  • Git Basico
  • Gitflow

Definiciones

que es que

Que es un sistema de control de versiones

Un sistema de control de versiones (Version Control System o VCS) es un programa que permite administrar las versiones del codigo, o sea, el estado del codigo en determinados momentos, asi como tambien gestionar la interaccion entre los diversos particiopantes que construyen ese codigo

Repo:

Repositorio. Lujar donde esta todo el codigo.

Commit:

Modificaciones realizadas al codigo.

Branch:

Rama. Divergencia del codigo.

Fork:

Replica de un repo.

Untracked files:

Archivos recientemente creados. ]sin trackeo.

Modified:

Se hicieron cambios en el archivos.

Staged:

Archivos modificados listos apra ser commiteados.

Committed:

Los cambios estan seguros..

Git workspace

4 estados

Se actualiza el codigo

Se crean o midifican los archivos

Se preparan los archivos apra comitear

Se comitean los cambios

Git workspace

5 pasos

Se suben los cambios

Que tiene Git?

  • Versiones locales del repo
  • descentralizado
  • manejo rapido y eficiente de branches

Git basico

los comandos que SIEMPRE vas a usar

  • pull
  • status
  • add
  • commit
  • push
  • checkout

pull

Descarga el branch remoto en el que estamos y lo mrgea con nuestro branch. Ademas, actualiza la lista de branches.
git pull <remote> <branch>

status

Nos muestra en que estado de trackeo se encuentran los archivos
git status

add

Agregua los archivos especificados para ser comiteados
git add <file>
git add <folder>
git add .

commit

Graba los cambios en el repo local
git commit -m "MENSAJE"

push

Sube nuestro branch al repositorio remoto especificado.
git push <remote> <branch>

checkout

Deshace cambios
git checkout <file>
git checkout <folder>
git checkout .

git checkout <commit>

Pasos para practicar en casa

  • Se instalan Git (obviamente)
  • Crean una carpeta
  • entran a esa carpeta
  • git init
  • y listo.  Empiezen a aplicar los comandos que vimos :
  • (add, status, checkout, commit)

8 y 9 de agosto

  • branch
  • stash
  • clone / init
  • remote
  • resolucion de conflitos
  • amend
  • diff
  • log
  • reset
  • .gitignore
  • config
  • gitflow
  • PR

clone

para iniciar un repositorio que ya existe en un remoto

init

para iniciar un repositorio desde 0

git clone REMOTE [NOMBRE]
git init

branch

Rama. Desarrollo paralelo

  • mantiene el repo y los remotos
  • debe tener un nombre o puede ser temporal

 

stash

Un espacio, con caracteristicas de pila, donde almacenar diferentes estados de codigo

git checkout -b NOMBRE
git stash
git stash save NOMBRE

remote

Permite el manejo de los repositorios remotos

 

merge

Se encarga de realizar los mrge entre 2 branches

git remote add NOMBRE URL
git remote -v
git remote show NOMBRE
git remote rename NOMBRE NOMBRE_NUEVO
git remote rm NOMBRE

git merge BRANCH

Resolucion de conflictos

  • conflictos de merge
  • encontrar el conflicto
  • solucionarlo

Conflicto

los conflictos de merge suelen darse cuando git quiere actualizar un archivo y no sabe que version usar.

Esto suele pasar cuando hacemos un pull y tenemos modificadosarchivos que han cambiado

solucion

simplemente eliminar lo que no queremos, y ls marcas que nos deja git.

luego terminar el merge haciendo

donde

Cuando haya un conflicto, git nos informara en que archivo y en ese archivo lo entraremos asi

<<<<<<< HEAD
nine
=======
eight
>>>>>>> branch-a
git add
git commit

amend

permite hacer modificaciones sobre el ultimo commit

diff

nos permite ver diferencias entre commits, branches, archivos, historiales

git commit --amend
git diff ARCHIVO
git diff
git diff BRANCH_1...BRANCH_2

checkout

peligrosamente, checkout se usa tanto para cambiar el workspace de archivos como para manejar branches

branch

permite realizar otras acciones sobre branches

git checkout ARCHIVO
git checkout .
git checkout -b NUEVO_BRANCH
git branch
git branch -r
git branch -a

git branch -d NOMBRE
git branch -m NOMBRE

reset

permite deshacer cambios a archivos, ya sea manteniendo las modificaciones o eliminandolas

git reset ARCHIVO
git reset .

git reset --hard ARCHIVO

cherry-pick

permite traer un commit de otro branch

git cherry-pick COMMIT

log

  • permite ver historiales.
  • acepta aprametros de numeros de linea, numeros de commits, fechas, periodos de tiempo, autor, mensajes
git log
git log -2
git log --oneline
git log -p ARCHIVO
git log -L <inicio>,<fin>:ARCHIVO

.gitgnore

permite definir archivos que no seran trackeados por git

A collection of useful .gitignore templates

https://github.com/github/gitignore

config

git config --global user.name "John Doe"
git config --global alias.co checkout
git config --global alias.st status
git config --global core.editor emacs

define opciones globales y para el repositorio

rebase

  • Bullet One
  • Bullet Two
  • Bullet Three

gitflow

gitflow (o flujo de git) es un modelo de organizacion para desarrollo.

Existen varios modelos.

Estos flow suelen variar de acuerdo a la complejidad del proyecto en cuanto a colaboradores y repositorios remotos.

https://www.atlassian.com/git/tutorials/comparing-workflows/

El mas simple y eficiente es:

http://danielkummer.github.io/git-flow-cheatsheet/

Se ha desarrollado herramientas apra implementar este flow de amnera lñimpia y automatica:

http://danielkummer.github.io/git-flow-cheatsheet/

git inside git

  • Bullet One
  • Bullet Two
  • Bullet Three

unusual uses of git

cons of git

customize git

GIT

By Pablo Hiyano