pablo.hiyano@globant.com
dax.pablo@globant.com
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
Repositorio. Lujar donde esta todo el codigo.
Modificaciones realizadas al codigo.
Rama. Divergencia del codigo.
Replica de un repo.
Archivos recientemente creados. ]sin trackeo.
Se hicieron cambios en el archivos.
Archivos modificados listos apra ser commiteados.
Los cambios estan seguros..
4 estados
Se actualiza el codigo
Se crean o midifican los archivos
Se preparan los archivos apra comitear
Se comitean los cambios
5 pasos
Se suben los cambios
Descarga el branch remoto en el que estamos y lo mrgea con nuestro branch. Ademas, actualiza la lista de branches.
git pull <remote> <branch>Nos muestra en que estado de trackeo se encuentran los archivos
git statusAgregua los archivos especificados para ser comiteados
git add <file>
git add <folder>
git add .Graba los cambios en el repo local
git commit -m "MENSAJE"Sube nuestro branch al repositorio remoto especificado.
git push <remote> <branch>Deshace cambios
git checkout <file>
git checkout <folder>
git checkout .
git checkout <commit>git init
(add, status, checkout, commit)
para iniciar un repositorio que ya existe en un remoto
para iniciar un repositorio desde 0
git clone REMOTE [NOMBRE]git initRama. Desarrollo paralelo
Un espacio, con caracteristicas de pila, donde almacenar diferentes estados de codigo
git checkout -b NOMBREgit stash
git stash save NOMBREPermite el manejo de los repositorios remotos
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
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
simplemente eliminar lo que no queremos, y ls marcas que nos deja git.
luego terminar el merge haciendo
Cuando haya un conflicto, git nos informara en que archivo y en ese archivo lo entraremos asi
<<<<<<< HEAD
nine
=======
eight
>>>>>>> branch-agit add
git commitpermite hacer modificaciones sobre el ultimo commit
nos permite ver diferencias entre commits, branches, archivos, historiales
git commit --amendgit diff ARCHIVO
git diff
git diff BRANCH_1...BRANCH_2
peligrosamente, checkout se usa tanto para cambiar el workspace de archivos como para manejar branches
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
permite deshacer cambios a archivos, ya sea manteniendo las modificaciones o eliminandolas
git reset ARCHIVO
git reset .
git reset --hard ARCHIVO
permite traer un commit de otro branch
git cherry-pick COMMITgit log
git log -2
git log --oneline
git log -p ARCHIVO
git log -L <inicio>,<fin>:ARCHIVO
permite definir archivos que no seran trackeados por git
A collection of useful .gitignore templates
git config --global user.name "John Doe"
git config --global alias.co checkout
git config --global alias.st status
git config --global core.editor emacsdefine opciones globales y para el repositorio
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: