OH NO GIT!!
Víctor Suárez García - Python Almería
Víctor Suárez
Ingeniero informático que pertenece al colectivo Hacklab Almería/La Jaquería (además de python Almería); que siempre anda preparando y dando charlas y talleres.
Ya se git
o eso creo...
Git merge
git push -f
Oh No GIT!!
Forks
Merge
- Modifica la rama destino manteniendo la rama origen intacta.
- Crea un nuevo commit
Rebase
- reintegra la rama origen en la rama destino.
- No modifica el arbol de commits.
- La rama deja de estar disponible.
Merge VS
Rebase
Conflictos
Conflictos
$ git branch
branch_to_create_merge_conflict
* master
$ git merge branch_to_create_merge_conflict
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
<<<<<<< HEAD
Este es mi fichero
=======
Este es mi nuevo fichero
>>>>>>> branch_to_create_merge_conflict
git diff
git reset
Ver diferencias
Deshacer cambios
Conflictos
git add .
git commit -m "resolved conflict"
Deshacer merge
git merge --abort
Commits
Si queremos modificar el mensaje del commit, podemos usar la opción --ammend.
git commit --amend -m "nuevo mensaje de commit"
Commits
Como eliminar el último commit??
git reset --soft HEAD^
git reset --hard HEAD^
git reset --mixed HEAD^
apunta la rama al anterior commit pero no modifica el fichero
apunta la rama al anterior commit pero modifica el fichero. Perdiendo los cambios.
apunta la rama al anterior commit sin modificar el fichero y sin hacer cambios en los indices
git push -f
CUIDADO!!! usar con precaucion!!!!
STASHING
En git podemos guardar el estado actual de nuestros cambios temporalmente para poder continuar más adelante. Esto se hace con la orden stash
git stash
Para restaurarlo:
git stash pop
Git Hooks
Git Hooks
En git, podemos usar una serie de Scripts para hacer acciones en distintos puntos como puede ser antes de hacer un commit, antes de un rebase,etc..
Dentro de nuestro repositorio, en la carpeta .git/hooks, podemos ver una serie de scripts
Git Hooks
Cliente | Servidor | Otros |
---|---|---|
pre-commit | prepare-receive | pre-rebase |
prepare-commit-message | update | post-rewrite |
commit-msg | post-receive | post-rebase |
post-commit | pre-push |
Para usar alguno de estos Scripts, simplemente eliminamos la extensión .sample
GitIgnore
GitIgnore
A la hora de trabajar en proyectos a veces se crean ficheros temporales que no queremos registrar con git. Para que git no tenga en cuenta estos ficheros, crearemos un fichero llamado .gitignore.
out
node_modules
.vscode-test/
*.vsix
coverage/
.nyc_output/
Hora de la demo!!
Muchas Gracias
- Twitter: https://twitter.com/zerasul
- Github: https://github.com/zerasul
- Blog: https://zerasul.me
Referencias
- https://git-scm.com/doc
- https://www.solucionex.com/blog/git-merge-o-git-rebase
- https://www.atlassian.com/es/git/tutorials/using-branches/merge-conflicts
- https://www.atlassian.com/es/git/tutorials/rewriting-history
- https://stackoverflow.com/questions/3528245/whats-the-difference-between-git-reset-mixed-soft-and-hard
- https://www.atlassian.com/es/git/tutorials/saving-changes/git-stash
- https://booleanbite.com/web/automatizar-tareas-con-git-git-hooks/
- https://git-scm.com/docs/gitignore
oh no git
By zerasul
oh no git
Tutorial Git intermedio donde se ven distintas situaciones que podemos encontrarnos.
- 1,908