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
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:
git inside git
- Bullet One
- Bullet Two
- Bullet Three
unusual uses of git
cons of git
customize git
GIT
By Pablo Hiyano
GIT
- 766